Django 1.7 内置迁移与南迁移?

Posted

技术标签:

【中文标题】Django 1.7 内置迁移与南迁移?【英文标题】:Django 1.7 built in migrations vs South migrations? 【发布时间】:2014-12-21 16:38:45 【问题描述】:

我已经在问题中检查了这个问题,但找不到任何关于 Django 构建迁移的简单解释,或者 - 它们足够可靠吗?

我使用 Django 1.7 开始了新项目,但在迁移构建时遇到了很多问题。在南方很正常的简单事情在那个版本中引起了我的例外。例如,将 charfield 更改为外键会引发无法将字段类型转换为 int 的错误,这是正常的,这就是我进行迁移的原因。 正如我知道在我以前的项目中我必须与 South 做的事情一样,我强烈怀疑 django 迁移将处理此类操作?例如自定义字段自省,将外键转换为多态,抽象类更改为字段,以及许多其他... 所以我的问题是:

Django 1.7 内置迁移是否足够可靠? 复杂的标准化数据库结构?

附:至少和南一样强大(如果问题出在我使用它们的过程中,我会处理它,但我不想陷入我的项目已准备好,数据库有很多记录,我必须改变一些东西的情况这需要删除表和其他有风险的操作)。

【问题讨论】:

【参考方案1】:

您必须知道 Django Core 迁移是由 South 的主要贡献者 Andrew Godwin 编写的。

他的话是:

“South 四年前的设计达到了严重的极限,是时候将迁移支持添加到 Django 本身了”

所以,请理解 Django Core Migration 不是一个“并行”迁移系统,而是一个新系统,并且应该是一个更好的系统。我不太了解南方,但如果您在核心迁移方面遇到错误,可能是因为它的工作方式与南方不同,有些事情需要以不同的方式实现。我不认为是因为这个新工具不可靠。

当然,作为一个新工具,你必须小心错误(更新到 1.7.1),但 Django 是一个经过广泛测试且非常稳定的框架。

【讨论】:

以上是关于Django 1.7 内置迁移与南迁移?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Django 1.7 迁移的 Python 2.7 未绑定方法

django 1.7 迁移——如何清除所有迁移并从头开始?

在迁移中获取模型 ContentType - Django 1.7

从 South 迁移到 Django 1.7 迁移:可交换依赖项

在 Django 1.7 迁移之前运行 South 迁移的推荐方法是啥?

Django 1.7 迁移不会重新创建删除的表,为啥?