在Django 1.7迁移之前运行South迁移的推荐方法是什么?

时间:2014-09-04 22:21:05

标签: django django-models django-south django-migrations

我有一些包含大量南迁移的项目,包括需要按特定顺序运行的大量自定义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迁移接管。什么是最好的方法呢?如果这不可能或非常不推荐,最好的选择是什么?

1 个答案:

答案 0 :(得分:3)

也许这post可以帮到你。基本上你必须:

  1. 将当前迁移目录从“迁移”更改为“south_migrations”
  2. 使用此行更新您的设置

    SOUTH_MIGRATION_MODULES = {     'your_app':'your_project.your_app.south_migrations', }