我在Dajngo中有2个应用程序,A和B,每个应用程序都有自己的模型。
我负责将某些字段/列从A的模型移到B的任务
之前:
class Amodel:
fieldA = models.BooleanField(....
fieldB = models.....
fieldC = ........
class Bmodel:
fieldD = models......
之后:
class Amodel:
fieldC = ........
class Bmodel:
fieldA = models.BooleanField(....
fieldB = models.....
fieldD = models......
这使我构造此示例的方式有些混乱,但是Amodel和Bmodel位于不同的应用程序中
我设置了两个迁移文件,一个在B中,以在表中添加新列并迁移A中的数据,另一个在A中,以删除这些字段。
当我运行测试时,A的删除在B的数据迁移之前触发。我该如何处理?
某些可能相关的信息:
Django: 1.11
Postgres: 9.5
答案 0 :(得分:1)
让我们看看整个过程:
您在Bmodel
上添加了新字段,并为此(app_b/migrations/0001_new_fields.py
)生成了迁移
现在,您想进行数据迁移以将数据从Amodel移至Bmodel(app_a/migrations/0001_fancy_data_migration.py
)。
为此,我们将设置以下依赖项:
dependencies = [
('app_b', '0001_new_fields'),
]
确保仅在添加新字段后才能运行。
由于我们已迁移了所有重要数据,因此我们准备从Amodel
中删除字段。我们将删除它们并生成相应的迁移(app_a/migrations/0002_drop_fields.py
)。
这次,此迁移的依赖项将如下所示:
dependencies = [
('app_a', '0001_fancy_data_migraiton'),
]