1 回答

TA貢獻1859條經驗 獲得超6個贊
這聽起來像是啟動遷移項目到受支持且安全的 Django 版本的絕佳機會。始終使用 LTS 版本:2.2 是最新的 LTS 版本,3.x 尚未發布。
您需要從舊應用程序中復制模型并設置managed = False
,訪問與舊項目相同的數據庫以使用新 API 修改數據。
一旦您的 API 可以處理網站所需的所有功能,遷移整個網站將非常容易。
請注意以下事項:
新項目中的模型需要使用相同的數據庫表和列,具有相同的字段類型。但是沒有什么能阻止你重命名實際的模型和字段(如果你覺得舊項目使用“壞”的命名約定),只要你指定
db_column
(在字段上)和db_table
(在模型上)讓 Django 知道映射到現有的數據庫。您可以將新模型和表添加到現有數據庫(使用
managed = True
),而不會影響舊應用程序。
如果在某個階段您需要修改現有表:
然后,您可能會考慮切換到
managed = True
(并將舊應用程序更改為managed = False
),確保在此之前您已從數據庫中清除遷移表,然后使用fake
set 運行遷移(以免實際遷移任何內容)。如果不再維護舊應用程序,我會這樣做。如果仍然維護舊應用程序,那就有點棘手了。您可能必須直接在 SQL 中進行數據庫更改。
不會影響舊應用程序的更改:添加新列。
將影響舊應用程序的更改:限制約束、添加約束或更改數據類型的任何內容。
可能影響舊應用程序的更改:放松約束。這不會影響您數據庫中的現有數據,但它可能會觸發舊應用程序的驗證器,這些驗證器需要某種格式的數據并為新數據獲取“無效”數據。
添加回答
舉報