我想知道在项目的初期开发过程中使用(django)South的优势。
在开发的早期阶段,通常会有快速的模型更改,频繁的分支和合并(特别是如果您使用像git-flow这样的开发策略)以及很少(如果有的话)存储数据。为什么要保留这些初始模型更改?有什么优点/缺点?
我的印象是,在激活South并执行初始迁移之前,更容易等到开发阶段结束(并且您有实际想要保留的数据)。有可能吗?你想这样做吗?
答案 0 :(得分:16)
一旦我推动其他人需要使用的提交,我就创建一个迁移,这样他们仍然可以拥有一份工作副本。
如果您独自工作(并且不担心部署),这不是问题,您可以等到最后一刻创建迁移。
一旦您开始与他人合作,它可以让您的生活变得更加轻松,因此它成为一种工作流习惯,每个人都在同一个数据库页面上。
此外,如果您只是修改字段,则不能选择syncdb。为了添加,删除或修改字段而不得不吹掉桌子会非常烦人。
如果我添加了一堆架构迁移,有时我会将它们(回滚并删除它们并创建新的jumbo迁移)组合到一次迁移中。但通常情况下,迁移的数量并不会让我感到烦恼,因为它们并没有让我付出任何代价。
答案 1 :(得分:4)
我发现South在开发过程中和之后一样有用,正是因为表格字段经常变化。不得不放弃一个表并使用syncdb重新创建它只是为了添加一个字段,这是非常烦人的,特别是如果你有任何测试数据的话。 (您也可以直接在DBMS中修改表,但是您必须小心使用Django期望的相同字段类型,将属性设置为适当的ON DELETE等)。此外,如果其他人正在处理该项目,您必须确保告诉他们对其数据库副本进行完全相同的更改。南方让它变得更加简单,IMO。
话虽如此,如果南方可以选择删除之前的所有迁移,那么可能会很酷,因此当您正在整理初始开发并开始添加实际数据时,您可以从一个干净的平台开始。但最终那些额外的十几个迁移文件并没有给你带来任何损失。
答案 2 :(得分:2)
我在初期开发期间不使用South。我只有a script为每个应用程序创建夹具,所以当架构发生变化时,我会转储旧的测试数据,编辑架构,更新测试数据以便它可以使用新架构,然后恢复数据
答案 3 :(得分:0)
绝对可以在某个阶段使用南方并进行初始迁移。 SOuth docs:http://south.aeracode.org/docs/tutorial/part1.html#converting-existing-apps
我在开发期间使用南方,因为我经常使用数据来测试UI或类似的东西。如果在每次模型更改后都没有从一个完整的新数据库开始,South也非常有助于保持数据库的一致性。因此,我同意meder,如果Django有模式迁移会很好,另一方面它并不重要,因为南方很容易实现。
答案 4 :(得分:0)
好消息 - 截至2014年9月2日,迁移现已成为核心Django的一部分,版本为1.7。
https://docs.djangoproject.com/en/dev/releases/1.7/
我正准备安装South,现在我不必这样做。希望这能为同样情况下的其他用户提供有用的预测。