2013-12-20 36 views
0

我是Django的新手。我已經完成了本教程,並正在閱讀文檔以獲得更多的學習內容。正如我試圖增加我的理解,例如,在新的經理或模型表單中,我很好奇南方需要什麼(甚至只是廢棄並重寫應用程序)。一般來說,Django模型的變化何時需要南?

update django database to reflect changes in existing models

上面的鏈接說基本上是任何列更改是必要的,而下面的鏈接更多的是什麼,我問。有人可以在不需要時進行概括(例如:基於現有模型添加新的Form/ModelForm?添加管理器?)如果沒有對數據庫的列進行更改,那麼South不是不必要的?

Does changing a django models related_name attribute require a south migration?

回答

0

南遷有兩種類型:模式和數據。

數據遷移用於更改數據庫中的數據而不是數據庫的模式。

模式遷移是您感興趣的模式遷移。它們用於跟蹤對數據庫模式的更改,並且應該隨附導致數據庫模式更改的任何模型更改(創建表,刪除表,刪除列,更改空約束例如)

如果您閱讀Django應用程序的兩個連續遷移可能會發現一些偉大的見解。 在其中的每一箇中,您都可以找到應用遷移的代碼,恢復遷移的代碼和數據庫模式的快照。

P.S.檢查模型中是否需要進行南遷移是非常容易的。只需爲修改後的django應用程序運行schemamigration,並刪除新創建的遷移(如果已創建)。由於創建南遷移動與運行它不同,這是測試和學習的好方法。

請記住,南是一個像其他任何軟件一樣,它'支持'錯誤。

0

Related_name屬性發生變化只會影響您的項目,Django使用它來進行查詢。

像blank = True/False,null = True/False,symmetrical = True/False之類的變化雖然symmetrical = True/False並不會觸發update更新,但設置在字段創建時肯定會有所不同。

列更改與您的帖子顯示中的鏈接一樣,需要數據庫中的更新,這就是南非的好處。

相關問題