你如何迁移Django模型,类似于Ruby on Rails的迁移?

6

1
太好了!我也希望在Django中使用类似迁移的东西。 - NathanD
另请参阅此问题:https://dev59.com/I3RC5IYBdhLWcg3wD8tV 尽管那里被收藏的答案是 migratory,但它存在问题。 - Van Gale
4个回答

10

South是最有后劲的。dmigrations太基础了,依我看来。如果你在它之外触碰数据库,django-evolution会发出警告。

South是迄今为止最强大的竞争对手。通过模型冻结和自动迁移功能,它已经取得了长足的进步。


我对South印象深刻,但是django-evolution看起来也很有趣。如果未来几个小时内没有更好的答案,我就选择这个。 - Huuuze
如果您正在使用进化工具,就不应该在其外部触及数据库,因此我认为这并不是一个很有说服力的论点。 - Carl Meyer

5

South和django-evolution无疑是最好的选择。在我的经验中,South的模型冻结和自动提示仍然相当脆弱(django-evolution在极端情况下的提示更加健壮),但是自去年夏季以来,django-evolution的开发似乎大多停滞了。如果我现在开始,我可能会选择South,主要是因为这个原因。


2
阅读完此文后,我仅用不到1小时就从“对数据模型演进一无所知”变成了“使用south管理模型迁移”。South的文档非常出色,使我在短时间内掌握了它的使用。虽然我没有看过其他提到的工具,但我完全推荐South。
更新:自从一个月前发布这个答案以来,我经历了多次数据模型审查,从简单的字段重命名到完全用新表替换某些表。South不能完全自动化地完成所有任务(例如重命名看起来像是删除和添加),但文档会顺利指导您完成手动步骤。
我将在未来的任何项目中使用South。真是太棒了!

1
我是开发dmigrations团队的成员,但我完全推荐South。它更加成熟,正在积极开发中,并且具有一些杀手级功能,例如ORM冻结(如果您尝试在dmigrations中使用ORM代码,然后更改模型,那么您将面临巨大的痛苦)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接