我有一個Model
名爲FooModel
定義在my_app/models/foo.py
。Django遷移引用刪除的模塊
刪除foo.py
後,運行Django(1.7)遷移引發錯誤,因爲舊的遷移文件導入了foo.py
(import myapp.models.foo.FooModel
)。
我應該如何解決這個問題?
當模型有ImageField
和upload_to
參數時會發生這種情況。
我有一個Model
名爲FooModel
定義在my_app/models/foo.py
。Django遷移引用刪除的模塊
刪除foo.py
後,運行Django(1.7)遷移引發錯誤,因爲舊的遷移文件導入了foo.py
(import myapp.models.foo.FooModel
)。
我應該如何解決這個問題?
當模型有ImageField
和upload_to
參數時會發生這種情況。
有兩種情況:
你搬到別處FooModel
,然後編輯您的所有遷移文件,以反映這一舉動。
您刪除FooModel
,在這種情況下,請按照下列步驟操作:
FooModel
回到它在哪裏。FooModel
。./manage.py makemigrations my_app
./manage.py squashmigrations my_app <migration created with the previous comand>
- 看到doc對擠壓遷移更多的信息。FooModel
的任何應用重複上述兩個步驟。FooModel
和陳舊的遷移文件,一旦你確保一切正常工作。這應該因爲FooModel
沒有從任何其他模型中引用,應該從遷移文件時,擠壓他們刪除。
但是,要警告的是壓縮遷移不是一個簡單的操作,並且可能會導致將模型保留在代碼庫中而不使用它。
注意:在這種情況下,所討論的對象是Django模型,但這適用於由遷移文件引用的任何類,函數或模塊。
謝謝!希望有一個簡單的解決方案。但很高興知道目前可用的最佳選擇。 – eugene
你刪除了'FooModel'還是移動了它? – aumo
有時候,我刪除了,這次我把它移開了。 – eugene