Django 1.7 新數據遷移工具 (migrations) 的使用和如何從 South 升級轉換python
做者: Desmond Chen, 發佈日期: 2014-09-19, 修改日期: 2014-09-19
在1.6以前, Django只支持添加新的model到數據庫, 而沒法編輯或修改已經存在的model. 在當時, 這些Django缺失的功能能夠經過South實現.sql
Django 1.7 爲咱們帶來了三個新命令:數據庫
migrate: 用於執行遷移動做
makemigrations: 基於當前的model建立新的遷移策略文件
sqlmigrate: 顯示遷移的SQL語句
值得注意的是, migration是基於App的, 所以, 咱們能夠針對某些app不啓用migration功能.django
migrations的使用很是簡單: 修改model, 好比增長field, 而後運行app
python manager.py makemigrations
你的mmodel會被掃描, 而後與以前的版本做比較, 在app的migrations目錄下生成本次遷移文件.工具
咱們建議查看一下該遷移文件, 確保沒有問題. 而後運行:code
python manager.py migrate
migrate命令會進行比較, 並應用該遷移.blog
若是想從south升級到最新的django migration, 能夠按如下步驟實現:get
確保south中的migration所有被應用了
從 INSTALLED_APPS中移除south
刪除每一個app下migration目錄中的全部文件, 除了init.py
運行python manager.py makemigrations, Django會初始化migration
運行python manager.py migrate, django會發現數據庫和初始化的migration相同, 從而將他們標記爲已應用it