Django Model(I)

ss
3 min readSep 23, 2018

--

經歷前兩小節的介紹後,熟mvc概念的人很快就注意到(不熟的人可以咕狗一下,有很多這方面的資訊),怎會沒有database(model)的應用?不急,現在我們將要介紹model的加入

我們開啟seeclass/models.py,並將以下輸入

可以看到我們有兩個class分別是學校跟課程,透過django,我們可以很方便的省去寫sql的麻煩,因為現在太多資料庫的語言,很可能剛學完一個就要換另一種資料庫,要在重新適應,而django models幫助我們直接操作python就能達到同樣的效果

而charfield指的是文字類別的資料,後面可以設定長度,以及利用foreignkey來達到多個course對應到一間學校

設定完後,我們要建檔,輸入

python manage.py makemigrations seeclass(這邊指的是app的名稱)

0001_initial.py是用來紀錄model的內容以及變動,由於這是第一次build所以版本就是0001,若之後有變動版本數就會再往上升,我們可以透過migrate還讓model與database同步,輸入

python manage.py migrate seeclass 0001(version)

這樣也可以在我們出錯時,選回前一個版本的model,非常具有彈性

現在我們已經確定了資料庫的格式了,我們要做的就是將資料寫進資料庫

首先我們開啟python shell

python manage.py shell

輸入以下資料 去讀取資料庫(這樣我們就不用實際去寫sql了,真的很方便)

這時候一個小悲劇發生了,輸入school1只有告訴我它是個object,難道我只能透過輸入完整的school1.name才能看到nctu嘛?其實我們可以回到seeclass/models去修改一下

像這樣,至於為什麼這樣就可以?請參考物件導向的override,這邊筆者就先不深入敘述了,畢竟我們主要是了解model,此外python2的可以將str改成unicode

接著我們就可以在python shell上直接輸入school1就能看到了

記得要存進資料庫就用save這個method來幫助你,下次在開啟時它就不會消失了

這邊是資料庫操作的部份,至於怎樣跟view連結我們下次回來探討

--

--

ss
ss

No responses yet