稍后模型更改时 Django 数据迁移问题

Issue with Django data migration when model changes later

假设我有一个如下所示的 Django 模型:

class MyEntity(models.Model):
    my_first_attribute = models.CharField(max_length=50)

我创建了一个在 MyEntity 模型中插入一些值的数据迁移。

然后我创建了一个架构迁移,它添加了另一个属性 "my_second_attribute"。

如果我 运行 ./migrate.py 在新数据库上,运行ning 数据迁移失败并且 Django 抱怨 myentity.my_second_attribute 不存在!

有解决办法吗?

确保您的 data migration 函数执行此操作:

Person = apps.get_model("yourappname", "Person")

而不是使用这个:

from yourappname.models import Person

前者将采用先前模式迁移定义的数据库模式和模型(如 Migration.dependencies 中指定)。

后者将使用可能领先于迁移文件已知状态的当前资源。