iT邦幫忙

0

django新手村3 -----models 一對多

  • 分享至 

  • xImage
  •  

資料庫中的一對多如何在 django實現呢

先在app models.py 創建ClassRoom
https://ithelp.ithome.com.tw/upload/images/20211224/20135895PYCdqpT9Gi.jpg

執行遷移,像之前一樣在終端輸入
python manage.py makemigrations
python manage.py migrate

創建幾筆ClassRoom資料

修改原本的Student
https://ithelp.ithome.com.tw/upload/images/20211224/201358959s5XYpif7I.jpg

執行遷移,像之前一樣在終端輸入
python manage.py makemigrations
python manage.py migrate

可能會想說為什麼這麼麻煩,因為我不想改之前在Student的資料,所以只好直接讓外鍵預設值為ClassROOM的第一筆資料

不過最好還是在一開始就先想好怎麼設計資料庫,不要突然讓它突然多外鍵這種

有的時候遇到資料庫這邊的問題可以去刪除app/migrations中的檔案,除了0001_initial.py和__init__.py

對了有這個__init__.py代表它是一個包

回到主題可以看到 Student裡的ClassRooM屬性值,都變成了ClassRoom object (1)
https://ithelp.ithome.com.tw/upload/images/20211224/20135895nzMq5RUBk4.jpg

這個object 不是我們想要看到的

像上一張的方法
修改app 中的models.py
修改app 中的 admin.py

發現一樣在Student裡的ClassROOM屬性值,一樣是ClassRoom object (1)

這時要修改的地方其實是覆寫__str__方法 (藍色往上箭頭代表覆寫,在pycharm)
https://ithelp.ithome.com.tw/upload/images/20211224/20135895SFOOwd4Efe.jpg

這樣資料庫那邊就可以看到ClassRoom的name
https://ithelp.ithome.com.tw/upload/images/20211224/20135895yCvjwRcUVw.jpg

修改這邊也可以直接看到值,不在是object,是不是很方便呢
https://ithelp.ithome.com.tw/upload/images/20211224/20135895YOORWcg5s8.jpg

這篇完整程式

models.py
https://ithelp.ithome.com.tw/upload/images/20211224/20135895iTfV8oMKmz.jpg

admin.py
https://ithelp.ithome.com.tw/upload/images/20211224/20135895lra2GSqY9z.jpg


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言