【发布时间】:2013-07-02 10:09:46
【问题描述】:
我正在开发一个 Django 1.5 项目,并且我有一个自定义用户模型(我们称之为 CustomUser)。另一个应用程序 (SomeApp) 需要引用此自定义用户模型。出于 ForeignKey 等的目的,Django 文档说要使用
User = settings.AUTH_USER_MODEL
但是,SomeApp.models 中的某些函数需要访问以前称为User.objects 的内容。但是 User 现在是一个字符串而不是一个类,所以 User.objects 失败了。另一种选择是
from django.contrib.auth import get_user_model
User = get_user_model()
这在其他模块中有效,但是当我在 SomeApp 的 models.py 中使用它时,Django 会引发错误:
ImproperlyConfigured("AUTH_USER_MODEL 指的是尚未安装的模型 '%s'" % settings.AUTH_USER_MODEL)
有什么想法吗?
编辑 1 - 回溯:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "...\django-badger\badger\__init__.py", line 7, in <module>
from badger.models import Badge, Award, Progress
File "...\django-badger\badger\models.py", line 26, in <module>
User = get_user_model()
File "...\lib\site-packages\django\contrib\auth\__init__.py", line 127, in get_user_model
raise ImproperlyConfigured("AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL)
ImproperlyConfigured: AUTH_USER_MODEL refers to model 'MyApp.AuthUser' that has not been installed
编辑 2 - INSTALLED_APPS 设置:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'south',
'MyApp', # this is where my user model is defined
'SomeApp', # I try to use get_user_model() in this app's models.py; doesn't work.
'social_auth',
)
【问题讨论】:
-
你能发布完整的回溯吗?
-
您是如何在设置中定义
AUTH_USER_MODEL的?用户在哪个应用程序中,它的类名是什么? -
@matino - 是的,它在设置中定义。 get_user_model() 在除 models.py 之外的所有其他文件中都可以正常工作。我的自定义用户模型 AuthUser 是在 MyApp 中定义的(在这个例子中)
-
我们可以查看您的
INSTALLED_APPS设置吗? -
为什么在MyApp的models.py中使用
get_user_model()而不是直接引用类名?
标签: django django-models django-users django-1.5