解决迁移冲突

介绍

有时迁移会发生冲突,从而导致迁移不成功。这可能发生在很多场景中,但是在与团队一起开发一个应用程序时可能会定期发生。

使用源代码控制时会发生常见的迁移冲突,尤其是在使用每分支功能方法时。对于这种情况,我们将使用名为 Reporter 的模型,其属性为 nameaddress

此时两位开发人员将开发一个功能,因此他们都获得了 Reporter 模型的初始副本。开发人员 A 添加了一个 age,导致文件 0002_reporter_age.py 文件。开发者 B 添加了一个 bank_account 字段,结果是 0002_reporter_bank_account。一旦这些开发人员将其代码合并在一起并尝试迁移迁移,就会发生迁移冲突。

发生这种冲突是因为这些迁移都改变了相同的模型,Reporter。最重要的是,新文件都以 0002 开头。

合并迁移

有几种方法可以做到这一点。以下是推荐顺序:

  1. 最简单的解决方法是使用 –merge 标志运行 makemigrations 命令。

    python manage.py makemigrations --merge <my_app>
    

    这将创建解决先前冲突的新迁移。

  2. 如果出于个人原因不欢迎在开发环境中使用此额外文件,则可以选择删除冲突的迁移。然后,可以使用常规 makemigrations 命令进行新的迁移。编写自定义迁移时,例如 migrations.RunPython,需要使用此方法进行说明。