Django - Migrations

自帶db遷移功能在1.7版本之后,之前是利用第三方工具South.
主要用到三個(gè)命令:

  1. migrate: 具體實(shí)施db migration, 同時(shí)回退和顯示狀態(tài)。
  2. makemigrations: 根據(jù)你現(xiàn)有的db model與之前的比較,生成新的migration.
  3. sqlmigrate: 顯示migration的sql語(yǔ)句.

操作步驟

  1. python manager.py makemigrations [--name changed_model ]
  2. 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提供支持了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容