我已从我的项目中删除了一个包含几个自定义字段的应用程序。现在,当我尝试运行迁移时,我自然会收到 ImportError
。这些字段是非常基本的自定义,如下所示:
from django.db.models.fields import IntegerField
class SomeField(IntegerField):
def get_internal_type(self):
return "SomeField"
def db_type(self, connectio=None):
return 'integer'
def clean(self, value):
# some custom cleanup
pass
因此,它们都不包含任何数据库级别的自定义。
当我删除此代码时,我已经创建了迁移,因此后续迁移一切正常。但是当我尝试在预删除数据库上运行它们时,我意识到我的错误。
我可以重新创建一个简单的应用程序并使这些导入工作,但理想情况下我想知道 South 是否有解决这些问题的机制?或者有什么最佳实践吗?如果我可以通过修改我的迁移而不触及代码库来解决这些问题,那就太酷了。
(Django 1.3,南0.7.3)
最佳答案
South 在后续迁移中不保留已删除字段的引用。如果您删除了自定义字段并成功生成了迁移,则ImportError
可能是由于删除迁移之前的一些未完成的迁移仍然引用了这些自定义字段而导致的。所以
- 将代码库更新到执行脱壳和删除迁移之前的版本
- 迁移
- 更新代码库以进行删除迁移并迁移
关于django - 如何模拟已删除的自定义字段以便向南迁移运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051932/