Django多人开发模型迁移冲突问题解决

14,237 阅读1分钟

MedusaSorcerer的博客


问题描述

在多人协作开发项目的时候, 遇到了多位开发同事 同时 修改了 相同模型类的情况下该怎么处理模型类迁移的问题, 譬如:

  • A开发者: 在分支1项目代码中添加一个 "author" 的字段到 ABCModel 中, 这样就有了 migration 0003_blog_blog.py
  • B开发者: 在分支2项目代码中添加一个 "content" 字段到 ABCModel 中,这样就有了 0003_blog_content.py

合并代码后该怎么执行迁移文件呢? 两个文件都是以 0003 编号 ?

问题解决

  • 方案1
    • 尝试执行 python manage.py migrate
    • 执行文件冲突的情况下, Django将提示你执行python manage.py migrations -merge 进行合并
    • 执行合并后会在migration文件夹中生成 0004_merge.py
    • 执行 python manage.py migrate 执行合并后迁移
  • 方案2
    • 使用 python manage.py migrate [APPName] [migrationNumber] 指定APP指定迁移文件进行回滚到最近稳定迁移状态
    • 重新生成迁移文件进行迁移 python manage.py migrations
    • 执行 python manage.py migrate 执行迁移
  • 方案3
    • 开发项目可以对 migration 文件夹进行忽略
    • 开发仅仅需要对代码进行合并, 统一生成迁移文件并执行迁移

探索问题的同时 也是你的成长路