2013-05-08 83 views
0

South Docs中,當更改字段的名稱時,它希望您使用./manage.py schemamigration southtut --auto --update。當我使用它時,我得到以下./manage.py: error: no such option: --update。也檢查可能的選項時,我可以使用更新不在那裏。鑑於Django South在模型中使用--auto編輯字段名稱--update

選項:

--add-field= --add-model= --empty --help --pythonpath= --stdout --verbosity= --add-index= --auto --freeze= --initial --settings= --traceback

回答

2

很簡單,做沒有--update。當您發出schemamigration southtut --auto時,它應該自動確認所做的更改,並注意到某個字段已更改名稱並執行必要的操作。

它已經爲我工作。

除了--update所做的是更新最後一次遷移,而不是創建一個新的遷移,所以可能不是你想要的。你想要的是改變模式。

如果要重命名模型中的某個字段,則可能需要創建一個類似於創建遷移的操作,以新名稱添加新字段,然後創建數據遷移以添加舊字段中的數據(您想要更改名稱的人)添加到新字段(具有新名稱的字段),然後創建第三個遷移以刪除舊列。

您可以搜索如何在south doc中執行數據遷移。

你也可以試試它在這個非常good answer。這可能會更簡單。

希望它有幫助。

+0

我試過了,但是我的列名沒有改變,我做錯了什麼? – Crispy 2013-05-08 22:32:53

+0

當你發出命令時,它說了什麼?當它發現沒有任何變化時,南方會說:「沒有變化」。如果沒有,它會做這些改變。命令的輸出是什麼? – 2013-05-08 22:36:37

+0

好吧,它說它刪除了列(a)並創建了一個新的(b),但是當我去創建一個模型對象時,它說應該刪除的列(a)不能爲空? – Crispy 2013-05-08 22:40:37