W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
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è)遷移。如果不安全,你就得自己去修改遷移。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: