2016-06-07 79 views
1

我想在我的設置中設置自定義的AUTH_USER_MODEL,但由於過去的某些遷移而引發CircularDependencyError。 (我之前用過普通用戶)Django自定義驗證用戶模型和重置遷移

我該如何解決這個問題?我不關心數據庫,它只是一個單一的測試對象。但是,我可以重置/刪除遷移,還是需要啓動一個全新的項目?

回答

0

Django的警告反對改變AUTH_USER_MODELin the docs

更改AUTH_USER_MODEL對你的數據庫結構有很大的影響。它會更改可用的表,並會影響外鍵和多對多關係的構造。如果您打算設置AUTH_USER_MODEL,則應在創建任何遷移或運行manage.py首次遷移之前對其進行設置。

創建表之後更改此設置不受makemigrations支持,並且將導致您不得不手動修復您的模式,從舊用戶表中移植數據,並且可能需要手動重新應用某些遷移。

如果您不關心數據庫,那麼我會嘗試刪除數據庫,刪除現有的遷移文件並再次運行makemigrations

+0

謝謝!我可以刪除文件夾還是需要做其他任何事情? (我記得在刪除這樣的遷移時遇到了一些麻煩) – user3199840

+0

Im使用Django 1.8 .. – user3199840

+1

我會刪除'__init __。py'之外的'migrations'文件夾中的所有文件。如果您刪除整個遷移文件夾,我相信您必須運行'./mange.py makemigrations '來爲該應用程序創建初始遷移。 – Alasdair

0

只需刪除數據庫中的遷移文件和條目,即可輕鬆刪除遷移。然後,您可以再次遷移以創建您的「第一次」遷移。

+0

謝謝。你確定嗎?我如何刪除它?只需刪除或清空每個應用程序級別的文件夾?我記得之前在移除這種遷移時遇到了一些問題。我正在使用1.8 – user3199840

+1

只需刪除migrations文件夾中的文件(除了__init__.py)。然後刪除數據庫的遷移表中的條目。這樣做是相當安全的,特別是如果這是一個測試項目。你所做的只是刪除Django的遷移歷史。模型保持不變,下次運行'makemigrations'時會創建一個新的歷史記錄 – Alex