解決遷移衝突

介紹

有時遷移會發生衝突,從而導致遷移不成功。這可能發生在很多場景中,但是在與團隊一起開發一個應用程式時可能會定期發生。

使用原始碼控制時會發生常見的遷移衝突,尤其是在使用每分支功能方法時。對於這種情況,我們將使用名為 Reporter 的模型,其屬性為 nameaddress

此時兩位開發人員將開發一個功能,因此他們都獲得了 Reporter 模型的初始副本。開發人員 A 新增了一個 age,導致檔案 0002_reporter_age.py 檔案。開發者 B 新增了一個 bank_account 欄位,結果是 0002_reporter_bank_account。一旦這些開發人員將其程式碼合併在一起並嘗試遷移遷移,就會發生遷移衝突。

發生這種衝突是因為這些遷移都改變了相同的模型,Reporter。最重要的是,新檔案都以 0002 開頭。

合併遷移

有幾種方法可以做到這一點。以下是推薦順序:

  1. 最簡單的解決方法是使用 –merge 標誌執行 makemigrations 命令。

    python manage.py makemigrations --merge <my_app>
    

    這將建立解決先前衝突的新遷移。

  2. 如果出於個人原因不歡迎在開發環境中使用此額外檔案,則可以選擇刪除衝突的遷移。然後,可以使用常規 makemigrations 命令進行新的遷移。編寫自定義遷移時,例如 migrations.RunPython,需要使用此方法進行說明。