我最近開始在我的Django項目中使用South進行遷移。直到最近,當我遇到一個奇怪的問題時,一切進展順利。South在不同的應用程序中遵循什麼遷移順序?
我在我的項目中有兩個應用程序,比如App-A和App-B。 App-A中的模型具有App-B中模型的外鍵。當我嘗試構建我的系統時,我運行了syndb
,它創建了所有auth_
和south_
表。然後我跑了migrate
這引發了錯誤。當它試圖從引用App-B模型的App-A創建模型時,模型App-B尚未遷移/創建,因此也是錯誤。
爲了解決這個問題,我必須先手動遷移App-B,然後再App-A。我在這裏做錯了什麼? South應該如何知道跨應用程序的遷移順序?
謝謝。
剛上投這一點,因爲這其實是非常重要的。'depends_on'和'needed_by'似乎只控制實際的遷移。如果你剛開始遷移時,就像我的情況一樣,South將在遷移完成後嘗試加載應用程序的初始數據。我遇到了應用程序的初始da在另一個人需要它並遇到外鍵問題之前,它們並不可用。我可以通過重新訂購INSTALLED_APPS中的應用程序來解決此問題。South運行應用程序的順序是它們在'INSTALLED_APPS'中暫停運行任何遷移依賴關係。 – jaywhy13