5

我目前没有在我的 Django 项目中使用迁移,但我打算很快使用。我知道 South 是事实上的工具,我本来打算使用它,但后来我在 Django 项目网站上读到,开发版本(我猜将作为 1.7 发布)有一个核心迁移工具,运行为migrate.

由于使用迁移工具的经验很少(我用 South 安装了 Django-CMS 并玩了一天左右),对于初学者来说,哪个是最好的?

此外,由于迁移本身还很年轻,而且 Django 的版本更是如此,所以我现在最好选择 South 吗?

最后,另一个问题是,如果我从 South 开始(我的大部分 Django 项目都是 v1.5),当我升级到 1.6 再升级到 1.7 时,我会不会在转换到 Django 的核心迁移时遇到问题?

4

3 回答 3

4

由于 Andrew Godwin(创建者或 Django Core 迁移)关于此更改的说法是:“South 已有四年历史的设计达到严重限制,是时候将迁移支持添加到 Django 本身了”,我不会打赌导出的能力南迁移历史到 Django 核心迁移。

这就是为什么,如果可以的话,我建议你等到 1 月 20 日:如你所见,带有 Core Migration 的 Django 1.7 alpha 版本将发布

最终,Andrew Godwin 亲自参与了 South 的开发,因此您不应将 Django Core Migration 视为一个全新的工具,而应将其视为 South v2。

然后,您可以确定,一旦发布 Core 迁移,South 就不会真正得到维护。

这就是为什么我建议等待一段时间并给这个新工具一个机会:)

于 2014-01-13T17:31:31.667 回答
3

Django 1.7 的文档讨论了从 South 升级:

如果您已经使用 South 0.x 创建了预先存在的迁移,那么要使用的升级过程django.db.migrations非常简单:

  • 确保所有安装都与迁移完全同步
  • 删除所有(编号的)迁移文件,但不删除目录或init .py - 确保也删除 .pyc 文件。
  • 运行 python manage.py makemigrations。Django 应该看到空的迁移目录并以新格式进行新的初始迁移。
  • 运行 python manage.py 迁移。Django 将看到初始迁移的表已经存在并将它们标记为已应用而不运行它们。

而已!唯一的复杂情况是,如果您有外键的循环依赖循环;在这种情况下,makemigrations 可能会进行多次初始迁移,您需要使用以下命令将它们全部标记为已应用:

python manage.py migrate --fake yourappnamehere

(从这里)。

于 2014-05-01T12:29:46.083 回答
3

它很容易删除南迁移历史并初始化任何其他类型的迁移工具。

Django 核心迁移基于 South,所以我可以将 South 迁移历史导出到 Django 核心迁移。

由于 Django 核心迁移尚未发布,而您的目的是学习,我建议从 South 开始。

于 2013-12-23T22:34:42.810 回答