如果我改變Django模型中的字段,我該如何將它與數據庫表同步?我是否需要在數據庫上手動執行該操作,還是有工具可以幫助處理該流程?Django模型同步表
4
A
回答
6
唉,Django不支持任何簡單的解決方案。
唯一Django會爲你做的,是符合您的新模式,新表重新啓動數據庫:
$ #DON'T DO THIS UNLESS YOU CAN AFFORD TO LOSE ALL YOUR DATA!
$ python PROJECT_DIR/manage.py syncdb
下一個選項是使用不同的SQL *選項manage.py看django會如何將當前模型與數據庫相匹配,然後發佈自己的ALTER TABLE
命令以使所有內容正常工作。當然,這是容易出錯和困難的。
真正的解決方案是使用數據庫遷移工具,如south來生成遷移代碼。
這是一個similar question,討論django的各種數據庫遷移選項。
3
Django Evolution可以提供幫助,但最好的選擇其實是提前規劃出您的模式,或者手動進行簡單的修改。或者,願意通過刪除表格並重新同步來烘烤測試數據。
2
Django不提供此開箱即用。
以下是來自Django Book doing it by hand的一些信息(請參閱更改數據庫模式)。這適用於直接簡單的更改。
長期來看,您可能會想要使用遷移工具。主要有三個選項:
- django-evolution
- Dmigrations(由西蒙·威利森,Django會的創始人之一書面)(僅適用於MySQL的)
- South
編輯:翻翻由TokenMacGuy鏈接的問題,爲了完整起見,我會再添加兩個:
- Migratory
-
0
只是拋出一個額外的見解 - dmigrations是相當不錯的,明確的使用,但我要說南是你最好的選擇。再次,它很容易進入,但它更強大,並且支持更多的數據庫後端,而不僅僅是MySQL。它甚至處理MSSQL,如果這是你的東西
4
似乎無法添加評論標記的答案,可能是因爲我沒有足夠的代表(如果所以告訴我,所以雖然很好)。
反正只是想補充的是,在回答後,我認爲這是錯誤的關於執行syncdb - 執行syncdb不不觸摸表一旦被創建,並在其中有數據。你應該不通過調用其數據丟失
我相信海報是指復位命令來代替,這確實導致數據丟失(否則,你怎麼可以添加新表新的應用程序嗎?) - 它將刪除表並重新創建它,因此它將具有所有最新的模型更改。
相關問題
- 1. 請AngularJS與模型同步動態表
- 2. 避免同步模型
- 3. 模型Django新表
- 4. 如何在Django模型中同步更新實例?
- 5. Django Iphone同步
- 6. 在localStorage中同步模型和在ember.js中遠程同步模型?
- 7. 相同類型的Django模型外鍵
- 8. Django模板中的不同模型
- 9. 如何將默認表格模型與表格標題同步?
- 10. 與南同步Django
- 11. 在同一模板中顯示createview(模型表單)和listview - Django
- 12. Prepopulate Django(非模型)表格
- 13. Django驗證模型表格
- 14. Ajax,Django,Jquery模型表格
- 15. Django不安裝模型表
- 16. django模型表單錯誤
- 17. Django分層模型列表
- 18. 輸出Django模型如表
- 19. XML到數據模型同步策略
- 20. 在線/離線同步模型
- 21. akka/actor模型中的同步呼叫
- 22. 來自內存模型的java同步
- 23. 環回中的實時模型同步
- 24. 如何正確同步此模型?
- 25. 如何保持視圖模型和模型的集合同步
- 26. 同步同步列表
- 27. 同步模式
- 28. 將模型列表暴露給幾個ViewModel - 並保持同步
- 29. 保存兩個模型同步到數據透視表
- 30. Django - 不同形式的模型
南方肯定是走的路 – Apreche 2009-07-12 04:31:54
的確,南方是一個真正的好工具! – SingleNegationElimination 2009-07-12 04:56:46