Django上的数据迁移获得以前的Model版本

时间:2016-08-29 14:42:10

标签: python django

我正在进行数据迁移,需要将外键更改为其他模型,并将所有现有实例外键更改为新的Model pk。我认为这可以通过Django上的数据迁移来实现。我的问题是:

¿如何访问我的模型的先前版本才能执行数据迁移?

我想做这样的事情:

MyPreviousModel = previousModels.MyModel

ModelAfterMigration = afterMigrations.MyModel

all_previous = MyPreviousModel.objects.all()

for element in all_previous:
    element.previous_fk = new_foreignKey
    ModelAfterMigrations.create(element)

1 个答案:

答案 0 :(得分:1)

使用版本化的app注册表来获取模型,而不是导入语句。

def my_migration(apps, schema_editor):
    MyModel = apps.get_model("my_app", "MyModel")

传递给迁移工作者函数的第一个参数是一个应用程序注册表,其中包含加载到其中的所有模型的历史版本,以匹配迁移所在历史记录中的位置。