我有一些包含大量南迁移的项目,包括需要按特定顺序运行的大量自定义SQL的项目。升级到Django 1.7之后,这是关于如何将项目转换为使用South(来自Django documentation)的建议:
如果您已经使用South创建了预先存在的迁移,那么使用django.db.migrations的升级过程非常简单:
- 确保所有安装都完全与其迁移保持同步。
- 从INSTALLED_APPS中删除'south'。
- 删除所有(编号)迁移文件,但不删除目录或
__init__.py
- 确保删除.pyc文件。- 运行python manage.py makemigrations。 Django应该看到空的迁移目录并以新的格式进行新的初始迁移。
- 运行python manage.py migrate。 Django将看到初始迁移的表已经存在,并将它们标记为已应用而不运行它们。
简而言之,“擦除现有的迁移,Django将负责其余的工作。”
这里没有提到的是当现有的南迁移仅 只包含模型更改,而是包含需要按顺序运行的直接SQL,数据迁移等时该怎么办。在这种情况下,自动生成的Django迁移将遗漏很多东西,因为并不是所有这些变化都可以从内省模型文件中看出来。
理想情况下,可以使用South运行现有迁移,然后让Django迁移接管。什么是最好的方法呢?如果这不可能或非常不推荐,最好的选择是什么?
答案 0 :(得分:3)
也许这post可以帮到你。基本上你必须:
使用此行更新您的设置
SOUTH_MIGRATION_MODULES = { 'your_app':'your_project.your_app.south_migrations', }