以下摘自Team Workflow上的官方南方文件部分,
要注意的第二件事是,当您通过自己的迁移完成其他人的模型更改时,您需要进行一个新的空迁移,其中包含两个开发分支的更改(如果您'使用mercurial,这相当于合并提交。
我不明白为什么在这种情况下需要创建一个新的空迁移。在从其他人那里获取模型更改(以及相应的迁移)后,开发人员是否应该只运行./manage.py migrate
?我在这里错过了什么?
答案 0 :(得分:1)
我认为这意味着如果两个分支都对同一个模型进行了更改,那么最好合并代码并为这些更改重新创建一个迁移脚本。这是因为如果branch1有一个0006迁移脚本,而branch2有另一个0006迁移脚本(你知道南方如何顺序命名它们......)那么你就无法正确地自动合并它们,因为它们实际上是不同的文件。
因此,您需要合并代码更改,然后为合并的分支重新创建迁移脚本。
答案 1 :(得分:1)
我们遇到了与此相关的问题。假设我们有一个模型:
class Article(Model):
title = CharField()
开发人员1在其分支上添加一个字段,例如author
(迁移冻结标题,作者)
开发人员2在他的分支上添加了一个字段date_published
(迁移冻结了标题,date_published)
然后有人合并了两个分支。他们得到的是两次迁移,其中一人不知道date_published
而另一人没有看到author
字段。
这可能会导致南方尝试在下次创建自动迁移时添加author或date_published字段(最后添加的迁移),因为它根本不知道100%正确的db状态,它不会在迁移中冻结