經歷前兩小節的介紹後,熟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連結我們下次回來探討