Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django';s核心迁移工具vs South用于Django数据迁移_Django_Django South_Django Migrations - Fatal编程技术网

Django';s核心迁移工具vs South用于Django数据迁移

Django';s核心迁移工具vs South用于Django数据迁移,django,django-south,django-migrations,Django,Django South,Django Migrations,我目前没有在Django项目中使用迁移,但我打算很快使用迁移。我知道South是事实上的工具,我本来打算使用它,但后来我在Django项目网站上看到,开发版本(我猜将作为1.7发布)有一个核心迁移工具,作为migrate运行 由于使用迁移工具的经验很少(我在South上安装了Django CMS,并用它玩了一天左右),对于初学者来说,哪一个是最好的 另外,由于迁移本身还很年轻,Django的版本更是如此,我现在去南方会更好吗 最后,另一个问题是,如果我从南方开始(我的大多数Django项目都是v

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

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

另外,由于迁移本身还很年轻,Django的版本更是如此,我现在去南方会更好吗


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

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

Django core迁移基于South,所以我想可以将South迁移历史导出到Django core迁移

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

由于Andrew Godwin(创建者或Django core迁移)对这一变化的描述是:“South四年的设计达到了严重的极限,是时候向Django本身添加迁移支持了”,我不会打赌是否有能力将南方移民历史导出到Django核心移民

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

最终,您不应将Django Core迁移视为一个全新的工具,而应将其视为South v2

然后,您可以非常确定,一旦核心迁移发布,南方将不会得到真正的维护


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

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

如果您已经使用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

(来自)。

我安装了south并转换了我的应用程序,效果很好。因为我还没有准备好升级Django,所以这个计划似乎是个好主意。谢谢。相关问题:如何提供从South apps到Django 1.7 migrations的升级路径>Django将看到初始迁移的表已经存在,并将它们标记为已应用,而不运行它们。显然,并不总是这样。我得到错误“django.db.utils.OperationalError:table”[table]”已经存在。运行迁移应用0001--fake将修复此问题。