我在使用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
''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