2015-05-09 58 views
0

我有一個使用django restframework的python項目。它最初使用的是一個sqlite數據庫。現在我已將其更改爲postgresql。所有的數據都被替換,項目現在使用postgresql數據庫。它一切正常。manage.py migrate沒有檢測到更改

但現在我不得不改變我的Python項目的東西。我必須刪除模型中的某個字段(稱爲「產品」)。所以之後我在瀏覽器中檢查了我的django restframework,現場不見了。所以該字段在我的後端不再存在。一切都很好,但是當我試圖添加一個新產品時,我得到一個錯誤。因爲我的數據庫仍然期望我填寫已刪除的字段。

該字段仍在我的數據庫中,但未在0001_initial.py中描述。所以我認爲這些改革做了它的工作,但移民失敗了?

我已經做了以下內容:

python manage.py makemigrations 
python manage.py migrate 

而且還

python manage.py makemigrations (changed app) 
python manage.py migrate 

我真的不知道原因。由於該字段在我的項目和initial.py中被刪除,因此我認爲遷移將檢測到它並更改數據庫。

回答

1

遷移是一個累積記錄。初始遷移描述了您最初創建數據庫時的狀態。隨後的更改將通過進一步的遷移文件進行描述,每個遷移文件都會將您的數據庫遷移到創建遷移時的狀態。

因此,當您運行makemigrations時,將創建一個遷移0002,其中將包含刪除您的字段的代碼。