表名小写+_set()  得到的是一个QuertSet集合,她的后面可以跟 .add()   .remove()   .update()   .clear()

models.py  文件

# 学生表
class Student(models.Model):
name = models.CharField(max_length=30,default='') #学生的姓名 #手机表 一个学生可以选择多个手机品牌 , 一个品牌可以有多个学生选择
class Phone(models.Model):
name = models.CharField(max_length=40) #手机名称
stu = models.ManyToManyField(to='Student') #多对多关系

1.通过学生添加手机之间的关系

#通过学生添加手机   (CBV)
class Stu_phoneadd(View):
def get(self,request):
stu = Student.objects.filter(id=7).first() #通过学生ID查找学生
phone = Phone.objects.filter(id=3).first() #通过手机ID查找
stu.phone_set.add(phone)
return HttpResponse('ok ')

2.通过手机添加学生之间的关系

# 通过手机添加学生(CBV)
class Phone_stuadd(View):
def get(self,request):
phone = Phone.objects.filter(id=3).first() #通过ID来获取这个品牌的手机
stu = Student.objects.filter(id=1).first() #通过ID来获取这个学生
phone.stu.add(stu) #最后建立关系 return HttpResponse('okok') #返回给网页一个OK

3.通过学生删除与手机之间的关系

#通过学生删除手机(CBV)
class Del_stu(View):
def get(self,request):
stu = Student.objects.filter(id=1).first() #通过ID来获取学生
phone = Phone.objects.filter(id=2).first() #通过ID来获取手机
stu.phone_set.remove(phone) #最后通过表名小写_set 加remove 来删除学生和手机之间的关系
return HttpResponse('ko ok ') #返回给网页一个OK

4.通过手机来删除与学生之间的关系

#通过手机删除学生  (CBV)
class Del_phone(View):
def get(self,request):
phone = Phone.objects.filter(id=3).first() #通过ID来获取手机
stu = Student.objects.filter(id=1).first() #通过ID来获取学生
phone.stu.remove(stu) #最后通过表名小写来删除两者之间的关系
return HttpResponse('ok ko')

Django多对多的更多相关文章

  1. Python学习---django多对多自定义第三方表180206

    案例一: # version: python3.2.5 # author: 'FTL1012' # time: 2018/2/6 16:25 from django.db import models ...

  2. Django多对多关系建立及Form组件

    目录 Django多对多关系 1.创建方式一全自动 2.创建方式二纯手撸 3.半自动(推荐使用) forms校验组件 使用forms组件实现注册功能 form常用字段和插件 数据校验 钩子函数 HOO ...

  3. django 多对多 增 删 改 查

      一.通过url方式实现多对多的:增加,删除,编辑 代码目录: urls.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

  4. django -- 多对多关系的实现

    在django中表和表之间的多对多关系有两种实现方案: 方案一:直接使用django自动实现的多对多关系. 方案二:自己写连接表.然而告诉django在实现多对多关系时要使用的连接表. 一.方案一: ...

  5. django多对多中间表详解

    我们都知道对于ManyToMany字段,Django采用的是第三张中间表的方式.通过这第三张表,来关联ManyToMany的双方.下面我们根据一个具体的例子,详细解说中间表的使用. 一.默认中间表 首 ...

  6. Django多对多的创建

    1.多对多创建的应用场景: 在某表中创建一行数据是,有一个可以多选的下拉框 例如:创建用户信息,需要为用户指定多个爱好 2.创建方式: 方式一:自定义关系表,手动创建一张表用于关联其他多张表的关系 c ...

  7. Django多对多表的三种创建方式,MTV与MVC概念

    MTV与MVC MTV模型(django): M:模型层(models.py) T:templates V:views MVC模型: M:模型层(models.py) V:视图层(views.py) ...

  8. Django --- 多对多关系创建,forms组件

    目录 多对多三种创建方式 1.系统直接创建 2.自己手动创建 3.自己定义加与系统创建 forms组件 1. 如何使用forms组件 2. 使用forms组件校验数据 3. 使用forms组件渲染标签 ...

  9. Django 多对多 关系

    多对多,本意就是多个一对多的关系 定义多对多 ManyToManyField 字段 from django.db import models # 学生类 class Student(models.Mo ...

  10. 【Python】django多对多 查询 ,反查等操作

    The Django Book中这样写 但我使用属性名后加_set会报错 而直接用members = group.user_group_join.all() 就可以 可能因为我的MyUser类里有两个 ...

随机推荐

  1. 设置Win10默认启动的Linux子系统版本,启动指定Linux发行版

    设置Win10默认启动的Linux子系统版本,启动指定Linux发行版   MS酋长一年前已经与大家分享了启用“适用于Linux的Windows子系统(WSL)”的方法,但当时所能安装的只有由Cano ...

  2. python从入门到放弃之anconada真愁人

    原先未使用anconada,用的python2.7,每次install各种包各种问题真的心累 后来装了anconada,安装了python3.6 使用起来比较方便了. 陆续将遇到的问题更新如下~  一 ...

  3. [Java读书笔记] Effective Java(Third Edition) 第 5 章 泛型

    第 26 条:请不要使用原生态类型 声明中具有一个或多个类型参数的类或者接口,就是泛型(generic). 例如List接口只有单个类型参数E, 表示列表的元素类型.这个接口全称List<E&g ...

  4. oracle启动过程2

    5个目标点(知识点)环境说明,连接实例,hash运算dbs目录文件解释参数文件解释启动过程三阶段实战演练 本次课程目标是讲解oracle实例的启动过程首先了解一下本次实验环境    之前已经创建好了一 ...

  5. mongodb查询修改

    //查 public StatisticsSchoolPracticeView findByUser(String userId,int statOrgType,int inDateType){ Qu ...

  6. 在DELPHI中用TreeView控件从数据库中动态装载信息

    1.PInfo表结构ID VARCHAR(50)FullName VARCHAR(50)ParentID VARCHAR(50) 2.Unit文件unit Info; interface uses  ...

  7. 初始Hibernate框架

    首先我们需要先创建一个案例 构建一个Student 的实体类 private String name; private Integer age; private Integer id; 在SRC根目录 ...

  8. WePay-T

    (需先申请微信支付商户账号) 在微信支付中绑定appid,公众号和小程序都一样 微信支付中如下: 微信公众平台如下(公众号与小程序一样): 微擎配置微信支付 appid.appsecret为公众号中对 ...

  9. The request was rejected because the URL contained a potentially malicious String ";"报错解决

    报错信息 浏览器中看到的报错 错误摘要: The request was rejected because the URL contained a potentially malicious Stri ...

  10. Centos6.5搭建方法

    # VSFTP # ## ###安装 vsftp     yum install vsftpd* -y ###启动服务     /etc/init.d/vsftpd restart ###配置     ...