2016-05-05 69 views

回答

1

使用生成新的遷移:

python manage.py makemigrations 

以上將檢測更改您的模型,並生成一個遷移類,但沒有執行任何SQL呢。

要生成/的SQL應用到數據庫:migrate

python manage.py migrate 

如果你想看到將要更新數據庫前要執行的SQL這樣做:

python sqlmigrate {app_label} {migration_module} 

編輯:以上將重命名您的表後綴__old,創建一個新表並將數據從舊到新插入,然後刪除原始表。所以,不知道這是你想要的..

另一種選擇是使用普通的SQL來達到你想要什麼:

ALTER TABLE table_name DROP CONSTRAINT constraint_name; 

但請記住,爲了讓您的遷移更新的新的運行,發現遷移類聲明您的字段是唯一的,並將unique=True更改爲unique=False。如果需要更新任何其他服務器,則可以在此處運行drop constraint命令,以便所有內容都同步。

+0

當我使用'python manage.py makemigrations'時,我得到「沒有檢測到變化」 –

+0

謝謝,我用普通的sql做,顯然更喜歡用django來做,但我需要快速解決這個問題。 –

+0

確定你可以用sql修復它,然後修改你的遷移腳本。到目前爲止,你是如何處理遷移的?你有沒有0001_initial.py和其他遷移目錄? – fips

1

只需將模型中的值更改爲False,然後進行遷移和遷移。這會將數據庫中的所有項目更新爲新值。這是如果你使用南的新版本,而不是使用syncdb。

+0

其實我使用Django 1.8.5,所以我不使用南方 –