django框架模型系统(四)-----关系表中的数据操作、跨表查询

一、一对一数据操作

在第三节中,我们已经在数据库中创建好了五张表,下面我们来开始操作吧!!!进入项目目录中的IDLE并导入五个模型类
在这里插入图片描述
① 从学生详情访问学生
在这里插入图片描述
② 从学生访问学生详情,通过studentdetail访问
在这里插入图片描述

二、一对多数据操作

学院信息表与学生信息表为一对多的关系
① 一对多表关系数据的添加
在这里插入图片描述
② 通过创建grade_id构成一对多关系,下图为通过学生来访问学院信息
在这里插入图片描述
方法二:
g1 = Grade.objects.first()
s1 = Student.objets.first()
s1.grade = g1
s1.save()
③ 通过学院来访问学生信息
在这里插入图片描述
student_set:管理器,格式为“源模型小写_set”
这个管理器可在定义时设置related_name参数来命名

grade = models.ForeignKey(related_name='student')

三、多对多数据操作

① 创建三门课程
在这里插入图片描述
② 学生表中有三人
在这里插入图片描述
③ 通过中间表创建关联
方法一:
在这里插入图片描述
方法二:
在这里插入图片描述
③ 查询报了课程为English的学生
在这里插入图片描述
④ 查询学生名为lucy的学生所报的课程
在这里插入图片描述

四、处理关联对象的一些方法

① create(**kwargs):添加不存在的数据 ,将数据直接存入数据库
意义:创建一个新的对象,将它保存并放在关联的对象集返回新创建的对象
在这里插入图片描述
② add(obj1, obj2, …):添加已经存在数据库的数据
例:向刚创建好的g1学院中添加s1这个学生
在这里插入图片描述
③ remove(obj1, obj2, …): 从关联的对象集中删除指定的模型对象,删除的是关系表中的数据
例:从g1学院中移除s1这个学生
在这里插入图片描述
如上图所示,从g1学院中移除s1这个学生后,s1仍然是存在,也就是说它不会删除学生表中的数据,但学生表中的grade_id字段允许为空才可删除,删除后这个字段的值为null
④ clear():从关联的对象集中删除所有对象
例:将学生s1所报的课程全部移除
在这里插入图片描述

五、多表查询-----跨关联关系的查询

① 查询学院名字为’python学院‘的学生信息
在这里插入图片描述
② 也可反向工作,若要引用,只需使用该模型的小写名称
例:查询学生名字中包含’lu‘的学生的学员信息
在这里插入图片描述
③ 查询学号为’160102010101‘的学生所报的课程
在这里插入图片描述
④ 查询报名了课程1的所有学生
在这里插入图片描述
⑤ 查询报名了’English‘课程的学生所属学院的信息
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值