自帶db遷移功能在1.7版本之后,之前是利用第三方工具South.
主要用到三個(gè)命令:
- migrate: 具體實(shí)施db migration, 同時(shí)回退和顯示狀態(tài)。
- makemigrations: 根據(jù)你現(xiàn)有的db model與之前的比較,生成新的migration.
- sqlmigrate: 顯示migration的sql語(yǔ)句.
操作步驟
- python manager.py makemigrations [--name changed_model ]
- python manager.py migrate
依賴關(guān)系
migrations是針對(duì)每個(gè)APP實(shí)例的,太復(fù)雜的關(guān)系可能會(huì)導(dǎo)致失敗,特別是針對(duì)APP1和APP2這種依賴關(guān)系時(shí),不可靠,需要人工寫依賴。
Migrations文件
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [("migrations", "0001_initial")]
operations = [
migrations.DeleteModel("Tribble"),
migrations.AddField("Author", "rating", models.IntegerField(default=0)),
]
主要是兩部分組成:
- dependencies: 一系列所依賴的migrations
- operations: 具體操作的migrations動(dòng)作,具體用法見(jiàn)migrations模塊.
為APP添加migrations
如果APP已經(jīng)有了model,并且已經(jīng)創(chuàng)建了表,但是還沒(méi)有migrations, 你就需要將他轉(zhuǎn)化成可以使用migrations.
$ python manage.py makemigrations your_app_label
$ python manage.py migrate --fake-initial
按照上述方法,就可以在后續(xù)的migrations提供支持了。