2014-10-27 71 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' 

希望這有助於!

相關問題