模型遷移命令
models.py中模型變動后需要在終端中運行以下命令:
# 遷移計劃
python manage.py makemigrations
# 數(shù)據(jù)遷移命令
python manage.py migrate
# 如果使用以上命令時報語法錯誤号坡,可以嘗試將命令更改為
python3 manage.py migrate
models遷移計劃目錄
如圖所示匆绣,遷移計劃存放在項目-> 項目App -> migrations目錄下雇卷,查看該目錄的文件可以了解每次遷移執(zhí)行的內(nèi)容
如下圖所示济瓢,我們可以根據(jù)里邊的文件判斷出每次遷移計劃是創(chuàng)建表還是更改字段等操作
models 遷移計劃執(zhí)行歷史記錄表
所有已經(jīng)執(zhí)行過python manage.py migrate
命令的遷移計劃帚戳,都在數(shù)據(jù)庫中的django_migrations中有記錄
我們需要查看的是字段app為項目App的行削锰,name字段名稱與migrations目錄的文件名一一對應
如果migrations目錄的文件名出現(xiàn)在表中徒探,說明該計劃已經(jīng)被執(zhí)行;
此時執(zhí)行python manage.py migrate
命令將只會執(zhí)行在該表中沒有記錄的migrations目錄下的文件
了解遷移計劃目錄中文件的內(nèi)容和django_migrations表有助于我們解決一些在遷移中出的一些常見問題喂窟;
遷移時提示你xxx表已經(jīng)存在测暗,我們可以在migrations目錄中找到創(chuàng)建該表的文件央串,并將該文件的記錄到django_migrations表中,再進行遷移時就不會再進行創(chuàng)建該表了
如果想要重新創(chuàng)建某張表,可以將數(shù)據(jù)庫中該表刪除碗啄,將migrations與django_migrations表中的對應文件內(nèi)容與記錄刪除质和,重新執(zhí)行文章開頭的兩行命令即可
如果修改models字段后,遷移時提示該字段必須不為空稚字,并且沒有默認值饲宿,無法進行遷移;
此時我們可以給該字段加上default或者null=True