2011-08-29 16 views
15

使用南/ Django時,我遇到了一個問題,我試圖爲數據庫中存在行的模型添加UNIQUENOT NULL列。 South提示我指定列的默認值,因爲它是NOT NULL。但是由於它也有UNIQUE約束,我不能將默認值添加到models.py中的字段,也不能指定一次性值,因爲它在所有行上都是相同的。南:運行一個既是唯一的也不爲空的列的遷移

我想到解決此問題的唯一方法是首先創建一個可爲空的列,應用遷移,運行腳本以在該列中填充具有唯一值的現有行,然後添加另一個遷移以添加該列的約束條件爲UNIQUE

但是有沒有更好的方法來完成同樣的事情?

回答

13

是的,這是你應該採取的方法。你應該爲此做schemamigration - > datamigration - > schemamigration。不幸的是,如果在SQL中無法做到這一點,南方也無法做到這一點。

相關問題