django - 如何确保在将数据从这些列迁移到另一个表之前完成用于删除列的 django 迁移
问题描述
我在 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 在不同的应用程序中
我设置了 2 个迁移文件,一个在 B 中用于在表中添加新列并从 A 迁移数据,另一个在 A 中以删除这些字段
当我运行测试时,在 B 的数据迁移之前触发了 A 的删除。我该如何处理?
对于一些可能相关的信息:
Django: 1.11
Postgres: 9.5
解决方案
让我们看看整个过程:
您添加新字段
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'), ]
推荐阅读
- node.js - 运行远程 SSH 命令时如何配置远程 PATH?
- mysql - 需要排除多条记录的数据
- oracle - 如何在没有网线的情况下连接到同一台机器上VM中的数据库?
- c - 关于 C 代码中的偏移值到 MIPS 程序集转换的问题
- android - Clean Architecture 和 Paging 3.0 with Room
- powershell - 为什么替换在 Powershell 中不起作用?
- kivy - 减少 GridLayout 中列的宽度
- javascript - 当我使用多种配置时,如何提取常见的 Encore 设置?
- python - 数据框对象没有属性
- ubuntu - 如何在 gitlab CI 构建中仅安装 ssh?