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

资料库中的一对多如何在 django实现呢

先在app models.py 创建ClassRoom
http://img2.58codes.com/2024/20135895PYCdqpT9Gi.jpg

执行迁移,像之前一样在终端输入
python manage.py makemigrations
python manage.py migrate

创建几笔ClassRoom资料

修改原本的Student
http://img2.58codes.com/2024/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)
http://img2.58codes.com/2024/20135895nzMq5RUBk4.jpg

这个object 不是我们想要看到的

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

发现一样在Student里的ClassROOM属性值,一样是ClassRoom object (1)

这时要修改的地方其实是覆写__str__方法 (蓝色往上箭头代表覆写,在pycharm)
http://img2.58codes.com/2024/20135895SFOOwd4Efe.jpg

这样资料库那边就可以看到ClassRoom的name
http://img2.58codes.com/2024/20135895yCvjwRcUVw.jpg

修改这边也可以直接看到值,不在是object,是不是很方便呢
http://img2.58codes.com/2024/20135895YOORWcg5s8.jpg

这篇完整程式

models.py
http://img2.58codes.com/2024/20135895iTfV8oMKmz.jpg

admin.py
http://img2.58codes.com/2024/20135895lra2GSqY9z.jpg


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章