我目前没有在我的Django项目中使用迁移,但我打算很快。我知道南方是事实上的工具,我打算使用它,但后来我在Django项目网站上看到开发版本(我想发布为1.7)有一个核心迁移工具,运行为{{1 }}
来自使用迁移工具的经验很少(我在南方安装了Django-CMS并且玩了一天左右),这对初学者来说是最好的吗?
另外,由于迁移本身很年轻,而Django的版本更是如此,那么我最好还是选择南方这一点吗?
最后,另一个问题是,如果我从南方开始(我的大多数Django项目是v1.5),当我升级到1.6然后升级到1.7时,我是否会在转换为Django的核心迁移时遇到问题?
答案 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)。