Django4.0 遷移-工作流程

2022-03-16 17:49 更新

Django 可以為你創(chuàng)建遷移。對(duì)你的模型進(jìn)行修改——比如說,添加一個(gè)字段和刪除一個(gè)模型——然后運(yùn)行 ?makemigrations?:

$ python manage.py makemigrations
Migrations for 'books':
  books/migrations/0003_auto.py:
    - Alter field author on book

你的模型將被掃描并與當(dāng)前包含在你的遷移文件中的版本進(jìn)行比較,然后將寫出一組新的遷移。請(qǐng)務(wù)必閱讀輸出,看看 ?makemigrations ?認(rèn)為你已更改的內(nèi)容——它并不完美,對(duì)于復(fù)雜的更改,可能無法檢測(cè)到你所期望的。
一旦有了新的遷移文件,就應(yīng)該將它們應(yīng)用于數(shù)據(jù)庫,以確保它們可以按預(yù)期工作:

$ python manage.py migrate
Operations to perform:
  Apply all migrations: books
Running migrations:
  Rendering model states... DONE
  Applying books.0003_auto... OK

一旦應(yīng)用了遷移,將遷移和模型更改作為一個(gè)單一的提交來提交到您的版本控制系統(tǒng)——這樣,當(dāng)其他開發(fā)人員(或你的生產(chǎn)服務(wù)器)檢查代碼時(shí),他們將同時(shí)獲得對(duì)你的模型的更改和伴隨的遷移。
如果您你給遷移賦予一個(gè)有意義的名稱而不是生成的名稱,則可以使用 ?makemigrations --name選項(xiàng):

$ python manage.py makemigrations --name changed_my_model your_app_label

版本控制

由于遷移存儲(chǔ)在版本控制中,因此你有時(shí)會(huì)遇到這樣的情況:你和另一個(gè)開發(fā)人員都同時(shí)向同一應(yīng)用提交了遷移,從而導(dǎo)致兩次遷移的編號(hào)相同。
別擔(dān)心——這些數(shù)字只是給開發(fā)者參考的,Django 只在乎每個(gè)遷移都有不同的名稱。 遷移在文件中指定了它們所依賴的其他哪些遷移——包括同一應(yīng)用中的早期遷移,所以可以檢測(cè)到同一應(yīng)用有兩個(gè)新的遷移沒有排序。
當(dāng)這種情況發(fā)生時(shí),Django 會(huì)提示你,并給你一些選項(xiàng)。如果它認(rèn)為足夠安全,它將為你自動(dòng)線性化兩個(gè)遷移。如果不安全,你就得自己去修改遷移。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)