Django的核心迁移工具vs南方的Django数据迁移

时间:2013-12-23 21:36:52

标签: django django-south django-migrations

我目前没有在我的Django项目中使用迁移,但我打算很快。我知道南方是事实上的工具,我打算使用它,但后来我在Django项目网站上看到开发版本(我想发布为1.7)有一个核心迁移工具,运行为{{1 }}

来自使用迁移工具的经验很少(我在南方安装了Django-CMS并且玩了一天左右),这对初学者来说是最好的吗?

另外,由于迁移本身很年轻,而Django的版本更是如此,那么我最好还是选择南方这一点吗?

最后,另一个问题是,如果我从南方开始(我的大多数Django项目是v1.5),当我升级到1.6然后升级到1.7时,我是否会在转换为Django的核心迁移时遇到问题?

3 个答案:

答案 0 :(得分:4)

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

这就是为什么,如果可以的话,我建议你等到1月20日:带有核心迁移的Django 1.7 alpha版本将会发布,你可以看到here

最终,Andrew Godwin worked on South himself,所以你不应该将Django Core Migration视为一个全新的工具,而是作为South v2。

然后,您可以非常确定在Core迁移发布后不会真正维护South。

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

答案 1 :(得分:3)

很容易丢弃南迁移历史记录并初始化任何其他类型的迁移工具。

Django核心迁移基于南方,所以我猜测可以将南迁移历史导出到Django核心迁移。

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

答案 2 :(得分:3)

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

  

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

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

就是这样!唯一的复杂因素是你有一个外键的循环依赖循环;在这种情况下,makemigrations可能会进行多次初始迁移,您需要将它们全部标记为应用:

python manage.py migrate --fake yourappnamehere

(来自here)。