解决迁移冲突
介绍
有时迁移会发生冲突,从而导致迁移不成功。这可能发生在很多场景中,但是在与团队一起开发一个应用程序时可能会定期发生。
使用源代码控制时会发生常见的迁移冲突,尤其是在使用每分支功能方法时。对于这种情况,我们将使用名为 Reporter
的模型,其属性为 name
和 address
。
此时两位开发人员将开发一个功能,因此他们都获得了 Reporter
模型的初始副本。开发人员 A 添加了一个 age
,导致文件 0002_reporter_age.py
文件。开发者 B 添加了一个 bank_account
字段,结果是 0002_reporter_bank_account
。一旦这些开发人员将其代码合并在一起并尝试迁移迁移,就会发生迁移冲突。
发生这种冲突是因为这些迁移都改变了相同的模型,Reporter
。最重要的是,新文件都以 0002 开头。
合并迁移
有几种方法可以做到这一点。以下是推荐顺序:
-
最简单的解决方法是使用 –merge 标志运行 makemigrations 命令。
python manage.py makemigrations --merge <my_app>
这将创建解决先前冲突的新迁移。
-
如果出于个人原因不欢迎在开发环境中使用此额外文件,则可以选择删除冲突的迁移。然后,可以使用常规
makemigrations
命令进行新的迁移。编写自定义迁移时,例如migrations.RunPython
,需要使用此方法进行说明。