亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用最新版本創建新站點或使用舊站點

使用最新版本創建新站點或使用舊站點

至尊寶的傳說 2022-05-19 19:00:47
我正在進行的項目基于 Django 1.4,實際上我無法更改/更新它。我必須使用 API 來修改該站點上的數據。我以為我會使用 Django Rest Framework 來做到這一點。如果我使用 Django 3.X 和 DRF 的最新版本從頭開始一個新站點,使用與最舊站點相同的數據庫,會有問題嗎?我的意思是,如果通過在新站點上使用 API 我更改數據庫上的數據,這也會在“舊”站點上更改?另一方面,我可以繼續在“舊”站點上工作并使用舊版本的 DRF,但這些版本不太完整,文檔較少且安全性較低。
查看完整描述

1 回答

?
BIG陽

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),確保在此之前您已從數據庫中清除遷移表,然后使用fakeset 運行遷移(以免實際遷移任何內容)。如果不再維護舊應用程序,我會這樣做。

  • 如果仍然維護舊應用程序,那就有點棘手了。您可能必須直接在 SQL 中進行數據庫更改。

  • 不會影響舊應用程序的更改:添加新列。

  • 將影響舊應用程序的更改:限制約束、添加約束或更改數據類型的任何內容。

  • 可能影響舊應用程序的更改:放松約束。這不會影響您數據庫中的現有數據,但它可能會觸發舊應用程序的驗證器,這些驗證器需要某種格式的數據并為新數據獲取“無效”數據。


查看完整回答
反對 回復 2022-05-19
  • 1 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號