重寫用戶模型
阿新 • • 發佈:2018-07-23
del history 第一次運行 依賴 外鍵關聯 遇到 全部 field ups
我們在設計models數據庫的用戶管理會用到各種各種字段,比如用戶名,密碼,用戶登錄狀態等,這些字段如果自己來寫的話相當麻煩,這時候可以用django系統自動生成的user表。
來看auth_user的表結構:
但是想要在django內建的User模型不一定適合你的需求。django允許你通過 AUTH_USER_MODEL 設置 覆蓋User模型。
AUTH_USER_MODEL = "myapp.MyUser"
上面的值表示Django 應用的名稱(必須位於 INSTALLED_APPS 中) 和你想使用的User 模型的名稱。
改變 AUTH_USER_MODEL 對你的數據庫結構有很大的影響。它改變了一些會使用到的表格,並且會影響到一些外鍵和多對多關系的構造。如果你打算設置 AUTH_USER_MODEL , 你應該在創建任何遷移或者第一次運行manage.py migrate 前設置它。
錯誤提示:
如果你在遷徙的過程中出現以下兩種錯誤,那麽恭喜你
錯誤一、
auth.User.groups: (fields.E304) Reverse accessor for ‘User.groups‘ clashes
請檢查是否在項目中配置
settings.py AUTH_USER_MODEL = ‘myapp.MyUser‘
錯誤二、
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency user.0001_initial on database ‘default‘
請將系統自動生成的auth_user表刪除,這是因為Django中有一個原生的User模型類,admin的模型依賴這個模型類,由於前面一個應用中的模型類User繼承了AbstractUser類。
但是在刪除auth_user的時候你可能會遇到外鍵關聯等問題導致auth_user不能刪除的問題,那麽請將系統自動生成的表全部刪除。
(將所有表刪除)
在後續的遷移過程中,這些表都會重新建立。
重寫用戶模型