【发布时间】:2018-04-16 06:36:42
【问题描述】:
我目前正在开发一个 dev 分支,有一天我需要将它合并到 master。我的 dev 分支上最多有 20 个迁移文件,而 master 上的数量大致相同。我需要在两个分支上进行迁移,这将导致迁移具有相同的前缀,
(例如0003_auto)
换句话说,如果您有由makemigrations 生成的具有相同前缀的迁移文件,那么处理此问题的最佳/安全方法是什么。
以下是我认为自己的两种方式(可能完全错误):
删除所有迁移文件,合并代码,然后运行新的
makemigrations和migrate,这将导致只有一个迁移文件。-
使用
--merge标志让django 进行合并:makemigrations --merge
现在,知道了这一切,我想知道处理这个问题的最佳方法是什么。一般来说,我应该使用什么来正确合并冲突并在每次模型更新时为我提供一个新版本的项目。
编辑
我认为提供逐步解决方案对我和未来的用户来说是理想的,因为存在大量关于该主题的信息,但似乎没有一个是简洁明了的。
【问题讨论】:
-
你有生产数据库吗?你在用 git 吗?
-
我仍处于项目的开发阶段。但是最好不要删除数据库,是的,我正在使用 git。
-
另外,这是我目前的情况,但总的来说,我正在寻找一种简单的方法来做到这一点。我多次查看文档,但找不到处理迁移的简单方法正如我所说,我发现的唯一简单方法是
--merge,但这足够了吗? -
这是来自 Django 官方文档:每个应用程序的迁移文件都位于该应用程序内部的“迁移”目录中,旨在提交并作为其一部分分发,它的代码库。您应该在您的开发机器上进行一次迁移,然后在您同事的机器、暂存机器以及最终的生产机器上运行相同的迁移。
-
不幸的是,您在这些 cmets 中得到了一些非常糟糕的建议。正如文档所说,迁移是您代码库的一部分,必须致力于版本控制和部署。您不得在生产环境中运行 makemigrations。
标签: python django django-migrations