Django 多对多 关系
多对多,本意就是多个一对多的关系
定义多对多
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()
Django 多对多 关系的更多相关文章
- Django多对多关系建立及Form组件
目录 Django多对多关系 1.创建方式一全自动 2.创建方式二纯手撸 3.半自动(推荐使用) forms校验组件 使用forms组件实现注册功能 form常用字段和插件 数据校验 钩子函数 HOO ...
- django -- 多对多关系的实现
在django中表和表之间的多对多关系有两种实现方案: 方案一:直接使用django自动实现的多对多关系. 方案二:自己写连接表.然而告诉django在实现多对多关系时要使用的连接表. 一.方案一: ...
- Django --- 多对多关系创建,forms组件
目录 多对多三种创建方式 1.系统直接创建 2.自己手动创建 3.自己定义加与系统创建 forms组件 1. 如何使用forms组件 2. 使用forms组件校验数据 3. 使用forms组件渲染标签 ...
- django 学习-10 Django多对多关系模型
1.vim blog/models.py class Author(models.Model): name = models.CharField(max_length=30) def unicod ...
- django笔记-模型数据模板呈现过程记录(多对多关系)
首先,推荐一个网址:http://www.tuicool.com/articles/BfqYz2F,因为这里的比我的要有条理,更有利于各位的理解. 以下仅为为个人一次不完整的笔记: 环境:ubuntu ...
- Django 一对多,多对多关系解析
[转]Django 一对多,多对多关系解析 Django 的 ORM 有多种关系:一对一,多对一,多对多. 各自定义的方式为 : 一对一: OneToOneField ...
- django ORM模型表的一对多、多对多关系、万能双下划线查询
一.外键使用 在 MySQL 中,如果使用InnoDB引擎,则支持外键约束.(另一种常用的MyIsam引擎不支持外键) 定义外键的语法为fieldname=models.ForeignKey(to_c ...
- Django 之多对多关系
1. 多对多关系 作者 <--> 书籍 1. 表结构设计 1. SQL版 -- 创建作者表 create table author( id int primary key auto_inc ...
- Linux下开发python django程序(django数据库多对多关系)
1.多对多关系数据访问 models.py设置 from django.db import models # Create your models here. sex_choices=( ('f',' ...
随机推荐
- SPOJ - AMR11H Array Diversity (排列组合)
题意:给定n个数,求包含最大值和最小值的子集(数字连续)和子序列(数字不连续)的个数. 分析: 1.如果n个数都相同,则子集个数为N * (N + 1) / 2,子序列个数为2N-1. 2.将序列从头 ...
- 005、mysql查询表的结构
EXPLAIN hcc_ip 如果有一个表,表明为hcc_ip,使用以上语句可以得到下图 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:38247724 ...
- NoSQL:
NoSQL:NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL". 在现代的计算系统上每天网络上都会产生庞大的数据量. 这些数据有很大一部分是由关系数据 ...
- POJ 1260:Pearls 珍珠DP
Pearls Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7947 Accepted: 3949 Descriptio ...
- Android 心跳包心跳连接 如何实现android和服务器长连接呢?推送消息的原理
前言:现在的大多数移动端应用都有实时得到消息的能力,简单来说,有发送消息的主动权和接受消息的被动权.例如:微信,QQ,天气预报等等,相信好处和用户体验相信大家都知道吧. 提出问题:这种功能必须涉及cl ...
- 给rar文件加个自定义头
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- CI中site_url()和base_url()的区别
CI中site_url()和base_url()的区别 来源:未知 时间:2014-10-20 11:38 阅读数:150 作者:xbdadmin [导读] 在使用CI框架的使用经常碰到 ...
- PAT Advanced 1115 Counting Nodes in a BST (30) [⼆叉树的遍历,BFS,DFS]
题目 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following proper ...
- 主席树--动态区间第k小
主席树--动态区间第\(k\)小 模板题在这里洛谷2617. 先对几个问题做一个总结: 阅读本文需要有主席树的基础,也就是通过区间kth的模板题. 静态整体kth: sort一下找第k小,时间复杂度\ ...
- 2020/1/29 PHP代码审计之进一步学习XSS【持续更新】
0x00 上午学习了XSS漏洞,中午吃饭想了想,还是思考的太浅层了,这种老生常谈的东西对于现在的我意义不大.现在我需要的是思考.于是就有了这个随笔.在本文中,我会持续更新一些XSS的深入思考,payl ...