6

我有一些项目有很多南迁移,包括包含大量需要以特定顺序运行的自定义 SQL 的项目。升级到 Django 1.7 后,这是关于如何将项目转换为使用 South 的建议(来自Django 文档):

如果您已经使用 South 创建了预先存在的迁移,那么使用 django.db.migrations 的升级过程非常简单:

  • 确保所有安装都与它们的迁移完全同步。
  • 从 INSTALLED_APPS 中删除“南”。
  • 删除所有(编号的)迁移文件,但不删除目录或__init__.py- 确保也删除 .pyc 文件。
  • 运行 python manage.py makemigrations。Django 应该看到空的迁移目录并以新格式进行新的初始迁移。
  • 运行 python manage.py 迁移。Django 将看到初始迁移的表已经存在,并将它们标记为已应用而不运行它们。

简而言之,“擦除你现有的迁移,Django 会处理剩下的”。

这里没有提到的是,当现有的 South 迁移不仅包含模型更改,而是包含需要按顺序运行的直接 SQL、数据迁移等时该怎么办。在这种情况下,自动生成的 Django 迁移会遗漏很多东西,因为并非所有这些更改都通过自检模型文件显而易见。

理想情况下,可以使用 South 运行现有的迁移,然后让 Django 迁移接管。解决此问题的最佳方法可能是什么?如果这不可能或非常不推荐,那么最好的选择是什么?

4

1 回答 1

3

Maybe this post can help you. Essentially you have to:

  1. Change your current migration directory from 'migrations' to 'south_migrations'
  2. Update your settings with this line

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

于 2014-09-05T07:29:37.483 回答