2014-09-04 82 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', }