在Django進行數據遷移時,不免會誤將models文件中的字段名敲錯,結果致使數據遷移後沒法正常使用,在解決這個問題時,整理了數據遷移的邏輯以下:python
角色:models.py、initial.py、database3d
命令:python manage.py makemigrationsblog
python manage.py migrate同步
流程:經過編寫models.py,執行python manage.py makemigrations命令,生成initial.py文件(0001_initial.py),執行python manage.py migrate命令,將數據遷移至database中。it
問題:當數據遷移完成後,若是對models.py的表名進行了修改,那麼就須要再次進行數據遷移,再次執行python manage.py makemigrations命令,會提示是否要重命名,點擊Y確認。io
確認後,Django會自動生成一個邏輯文件(0002_auto_date_num.py),這個文件闡明瞭所要修改的內容。table
再執行python manage.py migrate命令,數據即遷移到database中,完成。date
此時,0001_initial.py中並未記錄修改後的內容,因此Django自動生成的這個邏輯文件就是輔助initial.py的,一旦將其刪除,若是再次要對models.py進行相似表名的修改操做時,執行以上步驟時(執行到python manage.py migrate),就會出現「no such table:xxx_xxx_xxx」這樣的報錯。model
若是將這個邏輯文件刪除了,那麼就須要在initial.py文件中找到修改前的那個表名,將其修改爲與database中對應的table名一致,而後再進行python manage.py migrate命令便可。im
總結就是,models.py文件與initial.py文件是相關聯的,而initial.py和database是相關聯的,想把數據同步過去,就須要initial文件左右逢源。