Django 多对多 关系
2024-10-08 18:16:18
多对多,本意就是多个一对多的关系
定义多对多
ManyToManyField
字段from django.db import models # 学生类
class Student(models.Model):
name = models.CharField(max_length=32) # 老师类
class Teacher(models.Model):
name = models.CharField(max_length=32)
students = models.ManyToManyField(to='Student',related_name='stu')多对多添加
- 添加一条记录
# 老师选择学生
teacherobj = models.Teacher.objects.filter(id=1).first()
studentobj = models.Student.objects.filter(id=1).first()
teacherobj.students.add(studentobj)
return Response('ok')# 学生选择老师
studentobj = models.Student.objects.filter(id=1).first()
teacherobj = models.Teacher.objects.filter(id=2).first()
studentobj.stu.add(teacherobj)
return Response('ok')- 添加多条记录
# 老师选择多名学生
teacherobj = models.Teacher.objects.filter(id=3).first()
teacherobj.students.add(*[1,2,3,4])
teacherobj.save()# 学生选择多名老师
studentobj = models.Student.objects.filter(id=2).first()
studentobj.stu.add(*[3,4])
studentobj.save()- 添加不重复的记录
# 老师选择多名学生
teacherobj = models.Teacher.objects.filter(id=3).first()
teacherobj.students.set(*[1,2,3,4])
teacherobj.save()# 学生选择多名老师
studentobj = models.Student.objects.filter(id=2).first()
studentobj.stu.set(*[3,4])
studentobj.save()多对多查询
# 查询老师有多少名学生
teacherobj = models.Teacher.objects.filter(id=3).first()
stuobj = teacherobj.students.all()# 查询学生有多名老师
studentobj = models.Student.objects.filter(id=2).first()
teacherobj = studentobj.stu.all()多对多更新
# 老师批量换学生
teacherobj = models.Teacher.objects.filter(id=3).first()
teacherobj.students.set([1,2,3,4])# 学生批量换老师
studentobj = models.Student.objects.filter(id=3).first()
studentobj.stu.set([1,2,3,4])多对多删除
# 老师删除一个学生
teacherobj = models.Teacher.objects.filter(id=3).first()
studentobj = models.Student.objects.filter(id=2).first()
teacherobj.students.remove(studentobj)# 学生删除一个老师
studentobj = models.Student.objects.filter(id=3).first()
teacherobj = models.Teacher.objects.filter(id=4).first()
studentobj.stu.remove(teacherobj)
studentobj.save()# 老师删除所有学生
teacherobj = models.Teacher.objects.filter(id=1).first()
teacherobj.students.clear()
teacherobj.save()# 学生删除所有老师
studentobj = models.Student.objects.filter(id=3).first()
studentobj.stu.clear()
studentobj.save()
最新文章
- 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制
- Spring 事务配置管理,简单易懂,详细 [声明式]
- 【BZOJ】【3759】Hungergame饥饿游戏
- Redis系列(2)之数据类型
- 简单计算器(Android)
- Httpservlet cannot be resolved to a type
- SE 2014年4月24日
- ios animation暂停pause、恢复resume
- IntelliJ IDEA 发布13版本——创造java奇迹
- VisualStudio2017集成GitHub
- boost多线程入门介绍
- UVA1620-Lazy Susan(思维+逆序对)
- redis服务意外停止
- ubuntu系统安装mysql登陆提示 解决Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'问题
- CentOS安装和配置Apache(httpd)
- Maven CXF wsdl2Java List<;Xxx>;生成ArrayOfXxx包装对象 解决方法
- Burp Suite扫描器漏洞扫描功能介绍及简单教程
- python对oracle数据库的操作
- 安卓机在按HOME键时,UNITY触发的APPLICATION_PAUSE事件
- PMP十五至尊图(第六版)