我正在进行数据迁移,需要将外键更改为其他模型,并将所有现有实例外键更改为新的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)
答案 0 :(得分:1)
使用版本化的app注册表来获取模型,而不是导入语句。
def my_migration(apps, schema_editor):
MyModel = apps.get_model("my_app", "MyModel")
传递给迁移工作者函数的第一个参数是一个应用程序注册表,其中包含加载到其中的所有模型的历史版本,以匹配迁移所在历史记录中的位置。