我有一个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