我想與django和南方握手,而且我似乎遇到了stale contenttype
問題 - 我無法找到它在SO或谷歌上的修復。django南 - 過時的用戶模型,當使用AbstractUser
所以,開始與我有Django的== 1.6一個簡單的項目上安裝的應用程序如下:
INSTALLED_APPS = (
'django.contrib.auth',
'django_browserid', # Load after auth
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sitemaps',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'south',
)
AUTH_USER_MODEL = 'auth.User'
和我運行這個syncdb
在這個階段不創建一個超級用戶。
現在,我創建了一個新的應用程序loginapp
並創建一個AbstractUser
如下:
#loginapp/models.py
class MyUser(AbstractUser):
is_admin_enabled = models.BooleanField(default=True) # new field
,並改變我的settings.py如下:
AUTH_USER_MODEL = "loginapp.MyUser"
現在
,在登錄應用程序,我跑(我加loginapp
到我的INSTALLED_APPS
字典):
python manage.py schemamigration loginapp --initial && python manage.py migrate loginapp
..到目前爲止都很好 - 我可以看到南在我的db上創建了新的用戶模型。
現在,我回去和我的項目做一個syncdb
,我得到:
The following content types are stale and need to be deleted:
auth | user
Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.
..我猜Django的實現用戶模型已經改變,默認模式已經過時了。我試着在這裏使用「是」,我看到數據庫表仍然存在 - 大概是因爲syncdb不會刪除數據庫表。
我該如何避免上述問題?我只需要我的loginapp
中定義的用戶模型,而不是我的數據庫上的默認django用戶模型 - 使用南方。
真的很感謝任何線索/方向來解決這個問題。
這是沒有問題的。它只意味着auth |用戶不再在應用程序中引用(基本無法訪問)。南方發現它,並希望看到你想用它做什麼。如果你不打算再使用它,可以說'是'。通過說'不',表格保留在數據庫中,沒有任何傷害。 – karthikr
我不確定在這裏說「是」或「否」影響結果。無論您說「是」還是「否」,表格都保留在數據庫中。 'syncdb'不能真正刪除表。我確信有一種方法可以在不出現這種「陳舊問題」的情況下進行設置。思考? – AJW
我們在這裏談論南方。這與syncdb無關。比方說,你做了一個全新的應用程序安裝和一個syncdb,這些表永遠不會被創建。 – karthikr