AUTH_USER_MODEL不接受子应用程序
问题描述:
我在使用Django 1.7.1
和Python 3.4
时遇到了自定义用户模型的问题。 我已经在apps.users.AuthUser中声明了一个自定义用户模型。然后我有另一个应用程序(apps.pets)将使用AuthUser作为宠物模型中的外键。请看下图:AUTH_USER_MODEL不接受子应用程序
class Pet(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL, db_index=True, blank=False, null=False)
这是我的情景:
在我INSTALLED_APPS
我: “apps.users”
如果我设置AUTH_USER_MODEL="apps.users.AuthUser"
当我运行 '的runserver' 的异常引发:
File "/home/frank/.virtualenvs/myproj/lib/python3.4/site-packages/django/contrib/auth/checks.py", line 12, in check_user_model
cls = apps.get_model(settings.AUTH_USER_MODEL)
File "/home/frank/.virtualenvs/myproj/lib/python3.4/site-packages/django/apps/registry.py", line 201, in get_model
app_label, model_name = app_label.split('.')
ValueError: too many values to unpack (expected 2)
如果我设置AUTH_USER_MODEL = “users.AuthUser” 当我运行迁移引发异常:
File "/home/frank/.virtualenvs/myproj/lib/python3.4/site-packages/django/db/migrations/state.py", line 89, in render
model=lookup_model,
ValueError: Lookup failed for model referenced by field pets.Pet.owner: users.AuthUser
类似的问题,这里报告我想:“apps.app_label.model_name” https://code.djangoproject.com/ticket/19845
这是否意味着在AUTH_USR_MODEL
设置我必须使用“app_label.model_name”,而不是?有没有解决方法?
EDIT1: 我的项目结构如下:
SITE_ROOT
|-- PROJECT_ROOT/
| |-- apps/
| | |-- app1
| | |-- app2
| |-- etc/
| |-- libs/
| |-- media/
| |-- requirements/
| | |-- __init__.py
| | |-- common.py
| | |-- development.py
| | |-- production.py
| | `-- staging.py
| |-- settings/
| | |-- __init__.py
| | |-- common.py
| | |-- development.py
| | |-- production.py
| | `-- staging.py
| |-- templates/
| |-- README
| |-- __init__.py
| |-- .gitignore
| `-- manage.py
答
在你安装的应用程序,你可以有你的只是应用程序的名称假设它在同一目录下,没有必要特别提到“myapp.users '只是'myapp'会做。
使用本:
AUTH_USER_MODEL = 'myapp.MyAuthUserModel'
不要使用此:
AUTH_USER_MODEL = 'myapp.models.MyAuthUserModel'
希望这有助于!
''AUTH_USER_MODEL''应该是'users.AuthUser',因为'AuthUser'住在'users'应用程序的'models.py'文件中。 “ValueError”很可能是代码中另一个错误的结果,但我无法真正给你指出特定的指针。 – knbk 2014-10-27 14:24:58
你可以添加你的项目结构吗? – cdvv7788 2014-10-27 18:36:53
@ cdvv7788您为什么要求添加项目结构而没有任何责任? – LKM 2016-07-13 15:13:15