關於django migrations的使用


     django 1.8之后推出的migrations機制使django的數據模式管理更方便容易,現在簡單談談他的機制和一些問題的解決方法:

1、談談機制:migrations機制有兩個指令,第一個是makemigrations,第二個是migrate,生成migrations代碼的makemigrations指令是用models里面的model和當前的migrations代碼里面的model做對比,如果有新的修改,就生成新的migrations代碼,migrate指令是用migrations目錄中代碼文件和django數據庫djaong_migrations表中的代碼文件做對比,如果表中沒有,那就對這些沒有的文件按順序及依賴關系做migrate apply,然后再把代碼文件名加進migrations表中。

一些問題的解決方法:

1、舊的項目如果升級到migrations機制:項目當前狀態,應該是數據庫和model定義一致,然后makemigtations,把生成的migrations initial文件全部加進django_migtrations表中,剩下的工作就和正常使用一樣了。

2、managed=Fasle表的測試處理,空庫測試,這部分表也需要做進測試數據庫,這部分表,可以先在False狀態下makemigrations,然后migrate一次,這樣那些migrations代碼已經屬於已執行狀態,剩下的就是把model和migrations代碼中的manged全部切為true,這樣這些代碼就可以在空庫測試中可用,同時不會再向數據庫同步,當然這些表加字段就需要你自己先makemigrations一次,然后手動merge新舊migratons腳本,當然最后最后這部分新的migrations代碼需要刪除掉。

3、關於migrations Schema學習的問題,migrations代碼實際叫Schema,這個代碼也是Python代碼,非常易讀,稍微學一下,以后可以幫助你解決不少類似問題2這樣的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM