2014-10-27 70 views
2

我在使用Django 1.7.1Python 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 
+1

''AUTH_USER_MODEL''应该是'users.AuthUser',因为'AuthUser'住在'users'应用程序的'models.py'文件中。 “ValueError”很可能是代码中另一个错误的结果,但我无法真正给你指出特定的指针。 – knbk 2014-10-27 14:24:58

+0

你可以添加你的项目结构吗? – cdvv7788 2014-10-27 18:36:53

+0

@ cdvv7788您为什么要求添加项目结构而没有任何责任? – LKM 2016-07-13 15:13:15

回答

0

在你安装的应用程序,你可以有你的只是应用程序的名称假设它在同一目录下,没有必要特别提到“myapp.users '只是'myapp'会做。

使用本:

AUTH_USER_MODEL = 'myapp.MyAuthUserModel' 

不要使用此:

AUTH_USER_MODEL = 'myapp.models.MyAuthUserModel' 

希望这有助于!

相关问题