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

资料库中的一对多如何在 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


<<:  26.MYSQL 统整资料

>>:  为了转生而点技能-JavaScript,day26(Event初探

day 12 - API组装实作

零件都准备好就可以组装起来了! 前几天分别完成了redis, error, log的封装, 接下来就...

轻松小单元 - 常见问题

假日就是要轻松 这个篇章整理了技服中心里的问答,包括专区的常见问题、开办研讨会的问答等,还有实作时碰...

Day5 Data types, Variables, and Operators (Ⅰ)

Question:如果给定一个圆的半径是10,那麽圆面积是多少? Sol:首先第一个想法是,将10输...

Day52. 范例:新产品开发(职责链模式)

本文同步更新於blog 情境:公司开发了一个新产品,客户端有许多不同的请求 客户端的请求类别 &...

[Day20]如何保障智慧财产?

因为原本的初衷是希望能够保护创作者的创作,避免被盗取做二次利用以及贩卖,所以才联想到区块链这个想法...