表名小写+_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. flutter中的异步机制 Future

    饿补一下Flutter中Http请求的异步操作. Dart是一个单线程语言,可以理解成物理线路中的串联,当其遇到有延迟的运算(比如IO操作.延时执行)时,线程中按顺序执行的运算就会阻塞,用户就会感觉到 ...

  2. SQL中instr和like的使用区别

    1.instr函数 instr函数是一个字符串处理函数,它在Oracle/PLSQL中是返回子字符串在源字符串中的位置,如果在源串中没有找到子串,则返回0. instr函数定义如下: /* * 返回子 ...

  3. WebView调用js方法获取返回值的完美解决方案

    在Android项目中我们或多或少会涉及到与js交互的问题,这其中WebView是必须掌握的控件,今天主要说说我们通过WebView调用js方法,然后如何很好的获取返回值.这里我总结了三种方式,大家可 ...

  4. c语言 nmealib-0.5.3 学习 简单代码 ,供参考

    void showInfo1(char *buf) { ];// ="$GPGGA,031105.000,4003.9196,N,11620.5765,E,1,05,3.4,109.0,M, ...

  5. 从零搭建配置Cuckoo Sandbox

    1.安装依赖 $ sudo apt-get install git mongodb libffi-dev build-essential python-django python python-dev ...

  6. leetcode刷题-559. Maximum Depth of N-ary Tree

    题目: https://leetcode.com/problems/maximum-depth-of-n-ary-tree/description/ n-ary-tree的数据结果表示 // Defi ...

  7. List 的删除

    List 不要在循环中使用remove 删除.可以新加一个List ,把符合条件的元素加入到这个list 中,然后调用removeAll . 比如:(增强for 循环需要判断 list 是否是 nul ...

  8. centos 7设置limit,不生效问题

    1:记录未修改之前的ulimit值 [root@bogon ~]# ulimit -a 2:修改配置文件 vim  /etc/security/limits.conf   在后面添加 *      s ...

  9. 有关IP和子网掩码的总结

    从之前写的那个概括的文章之后,具体细节知识我也不知道写啥子,最近忙于毕业论文和考证,所以就总结一下这方面的知识,本篇的话就先从IP说起. IP这方面有IPv4和IPv6这两方面的内容,这里就只说IPv ...

  10. Redis安装与配置问题

    Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...