我正在与另一位开发人员合作开发Django应用程序。到目前为止,我喜欢Django。
但是为了能够在开发过程中修改models.py,我拿起了南方的副本,现在我们一直在进行迁移合并冲突。
是的,我已经收到了备忘录:The important message here is that South is no substitute for team coordination - in fact, most
of the features are there purely to warn you that you haven’t coordinated, and the simple merging
on offer is only there for the easy cases. Make sure your team know who is working on what, so they
don’t write migrations that affect the same parts of the DB at the same time.
但我很困惑为什么存在迁移文件?如果models.py是数据库模式的权威词,那么迁移文件会给我什么?希望这将有助于我了解如何更好地使用南方。
答案 0 :(得分:1)
如果您不关心您的数据,那么您不需要迁移文件,甚至南FWIW - 您只需要清除表并重新运行manage.py syncdb
。这里的重点是允许数据迁移,一旦你在生产中并且拥有你关心的大量真实数据,这已被证明是一个非常有用的功能。
假设您有一个要分割为两个的字段或移动到另一个模型等...如果您不想丢失数据,则需要三个步骤:
这转化为
注意:您当然可以将它全部放入一个迁移文件中(这显然是最干净的解决方案,因为它使您的迁移成为原子),但是更容易使用1和3的自动模式迁移生成。
简而言之:“迁移文件”实际上是迁移脚本,这是您需要为任何现实生产项目编写的内容。 South主要提供一个支持框架(迁移脚本可能非常棘手)和一个非常方便的模式迁移生成器,它使您的生活更容易一个最常见的用例(非破坏性模式更改)。
答案 1 :(得分:0)
迁移文件保留模型的历史记录,最适用于版本控制系统(如SVN):
更多:迁移文件也用于数据迁移:您可以编辑它们以说明如何填充新字段或如何处理已删除的字段...
答案 2 :(得分:0)
拥有迁移文件允许您将数据库开发分成几个阶段。随时跟踪数据库中的变化,以便在历史记录中来回传递。
对以下内容有用:
当然可以通过其他方式完成,但随后可能会出现其他问题(如重置和填充整个数据库)