iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0

之前因為要換現有的資料庫做開發,但碰到ProgrammingError的狀況,一查才知道要變更資料庫,可不是憨人想得這麼簡單!

資料模型重置方法

一、砍掉重練

  1. 刪掉quiz/migrations底下的檔案(保留__init__.py)。
  2. 刪除postgresql的相關tables。
  3. 修改完models.py後執行:
python manage.py makemigrations
python manage.py migrate

但採取這種方式就沒法保留資料庫的資料,應該不是大家最樂意的方法。

二、保留原有資料

--fake
原則上如果先手動更改資料庫的資料,爾後才去更改models.py,Django是會報錯的,因為手動改好的資料庫跟Django的紀錄並不符合,變成相當複雜的情況。不過還好Django有提供一個方法來處理這種情況:

python manage.py migrate --fake quiz

記得昨天執行完migrate後,postgresql同時新增了兩個工作表,這是完整的流程,而fake的作用就是,我們同樣告訴Django我們要做資料遷移migrate,可是我們其實並沒有要更動資料庫,但如果要更動資料模型,你就是得執行migrate,所以用fake假的資料遷移動作,繞過Django這個規則來執行命令。

--fake-initial
另一種作法,透過重置資料模型修改的紀錄,讓紀錄回到0001_initial.py。

python manage.py migrate --fake-initial quiz

小結:fake跟fake-initial兩者使用的時機對我而言還是有點模糊,今天時間不多(加完班回到家已經8點多QQ),明天直接實作分別看效用為何。


上一篇
Creating models
下一篇
資料模型重置方法fake - 實例
系列文
Django案例實作之踩坑全記錄34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言