2014-09-04 79 views
6

我有很多南迁的项目,包括那些包含相当数量的自定义SQL需要以特定顺序运行的项目。升级到Django的1.7之后,这是如何在项目中使用南(从Django documentation)转换的建议:如果你已经有南方预创建现有的迁移在Django 1.7迁移之前运行South migrations的推荐方式是什么?

,然后在升级过程中使用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

你的意思是你的迁移不能随便报废你确定他们已经对所有安装后运行?您是否正在使用它们提供初始数据或其他内容的全新安装? – Kos 2015-03-26 11:49:32

回答

3

也许这个post可以帮助你。从本质上讲,你必须:

  1. 从 '迁移' 这一行

    SOUTH_MIGRATION_MODULES = { 'your_app' 更改当前迁移目录 'south_migrations'

  2. 更新您的设置:“your_project.your_app .south_migrations', }