3 回答

TA貢獻1802條經驗 獲得超5個贊
當您運行第一個migrate
命令時,所有默認遷移將生效,這意味著將創建所有表和關系。
當您自定義默認模型User
(覆蓋默認User
模型并為其提供值AUTH_USER_MODEL
)時,所有關系都會發生變化。
創建數據庫表后更改 AUTH_USER_MODEL 會變得更加困難,因為它會影響外鍵和多對多關系
不建議中途更改用戶模型,因為您需要手動修復數據庫架構。
如果您中途更改了用戶模型,解決此問題的最簡單方法是:刪除所有遷移、數據庫并運行 makemigrations 和 migrate 命令。這創建了一個新的數據庫模式。
這是文檔中所說的限制:
由于Django對可交換模型的動態依賴特性的限制,AUTH_USER_MODEL引用的模型必須在其應用程序的第一次遷移中創建(通常稱為0001_initial);否則,您將遇到依賴性問題。
來自文檔:
自定義用戶模型
在項目中更改為自定義用戶模型
最佳實踐是在項目開始時創建自定義用戶模型,然后稍后遷移并處理用戶模型,以防稍后更改與身份驗證或用戶模型相關的任何內容

TA貢獻1866條經驗 獲得超5個贊
此錯誤通常意味著您的遷移出了問題,并且當您在事后嘗試進行此類更改時經常會發生此錯誤。一種可能的解決方案是刪除除以initial.py
. 一次makemigrations
又一次migrate
,它應該有效。

TA貢獻1963條經驗 獲得超6個贊
如果我沒理解錯的話,你的項目已經在運行了,那就是 makemigration 不是第一次 makemigration。如果是這樣,請嘗試刪除數據庫并再次運行 makemigration(也許在測試開發環境中),只是為了檢查問題。如果這個工作(并且應該)你已經發現了問題。如果您不想刪除數據庫,也許您可以擴展用戶而不是覆蓋。
添加回答
舉報