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