django - 如何模拟已删除的自定义字段以便向南迁移运行?

标签 django data-migration django-south

我已从我的项目中删除了一个包含几个自定义字段的应用程序。现在,当我尝试运行迁移时,我自然会收到 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可能是由于删除迁移之前的一些未完成的迁移仍然引用了这些自定义字段而导致的。所以

  1. 将代码库更新到执行脱壳和删除迁移之前的版本
  2. 迁移
  3. 更新代码库以进行删除迁移并迁移

关于django - 如何模拟已删除的自定义字段以便向南迁移运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051932/

相关文章:

python - 在 Pypi 包中包含静态文件

javascript - 由Ajax调用的Python脚本,由Django服务器执行

SQL:如果数据尚不存在,则从另一个数据库插入数据

python - Django南迁错误: Key is Not Present

python - 在数据库中已有数据之后添加的 UUID 字段。有没有办法为现有数据填充 UUID 字段?

python - 南方迁移和 django 迁移有什么区别?

django - 第 1 行无效的 block 标签 : 'set' . 您是否忘记注册或加载此标签

python - 为什么 PyCharm 不建议为 Django 模型自动填充?

java - 如何将 SELECT 语句移至公共(public)静态

mysql - 从mysql到Hbase的持续数据迁移