1.多对多查询:涉及到两张表以上的查询。

    author_obj = models.Author.objects.first()
print(author_obj.name)
# 查询金老板写过的书
ret = author_obj.books.all()
print(author_obj.books,type(author_obj.books))
print(ret)

    # 1.create
# 通过作者创建一本书,会自动保存
# 做了两件事:
# 1.在book表里创建一本新书;2.在作者和书的关系表中添加关联记录
author_obj.books.create(title="金老板自传",publisher_id=2)
    # 2.add
# 在金老板关联的书里面,再加一本id是4的书
book_obj = models.Book.objects.get(id=4)
author_obj.books.add(book_obj)
    # 3.添加多个
book_objs = models.Book.objects.filter(id__gt=2)
# 不可以直接add(book_objs)
# 要把列表打散,再传进去
author_obj.books.add(*book_objs)
    # 4.直接添加id
author_obj.books.add(3)
    # 5.remove
# 从金老板关联的书里面把开飞船 删掉
book_obj = models.Book.objects.get(title="跟金老板学开飞船")
author_obj.books.remove(book_obj)
# 从金老板关联的书里面把id是8的记录删掉
author_obj.books.remove(8)
    # clear
# 清空
# 把id=2的作者所关联的所有书都删掉
author2_obj = models.Author.objects.get(id=2)
author2_obj.clear()
# 会提示:AttributeError: 'Author' object has no attribute 'clear'

Django之跨表查询——正反向查询(ManyToManyField)的更多相关文章

  1. Django【第7篇】:Django之ORM跨表操作(聚合查询,分组查询,F和Q查询等)

    django之跨表查询及添加记录 一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); ...

  2. Django之跨表查询——正反向查询(ForeignKey)

    1.正向查询和反向查询: 外键的查询操作: 正向查询: # 正向查询 # 基于对象,跨表查询 book_obj = models.Book.objects.all().first() ret = bo ...

  3. django之跨表查询及添加记录

    一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出 ...

  4. Django框架----跨表查询及添加记录

    一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出 ...

  5. django orm跨表查询废话最少最精简版

    在model.py中: class B1(models.Model): u1= models.CharField(max_length=32) #多 class B2(models.Model): f ...

  6. [Django]下拉表单与模型查询

    前言:本文主要针对自定义下拉表单制作,下拉表单的内容是取至于数据库,即动态实现下拉表单 正文: 动态实现下拉表单有两种方法: 一.自己手动写 html 模板中的 <form ...> &l ...

  7. django ORM模型表的一对多、多对多关系、万能双下划线查询

    一.外键使用 在 MySQL 中,如果使用InnoDB引擎,则支持外键约束.(另一种常用的MyIsam引擎不支持外键) 定义外键的语法为fieldname=models.ForeignKey(to_c ...

  8. django基础之day04,必知必会13条,双下划线查询,字段增删改查,对象的跨表查询,双下划线的跨表查询

    from django.test import TestCase # Create your tests here. import os import sys if __name__ == " ...

  9. Django 多表、跨表、聚合、分组查询

    前期准备: 创建表 class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalFi ...

随机推荐

  1. ImportError: No module named cx_Oracle

    1.ImportError: No module named cx_Oracle

  2. DOM——节点操作

    节点操作  var body = document.body; var div = document.createElement('div'); body.appendChild(div); ​ va ...

  3. JS自定义Array原型移除函数

    <script type="text/javascript"> //删除元素值 Array.prototype.remove = function(element){ ...

  4. BZOJ3211花神游历各国-线段树&树状数组-(HDU4027同类型)

    (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 题意:BZOJ HDU  原题目描述在最下面.  两种操作,1:把区间的数字开方一次,2:区间求和. 思路: 线段树:  显然不能暴力 ...

  5. WinDbg解决BHO不加载

    昨天zhengwei同学说他机器上的一个BHO不能正常加载,我把BHO的代码拿过来,在我的两台机器上都验证了一下,一台是Win7+IE8的环境,一台是XP+IE7的环境,都能正常加载.zhengwei ...

  6. 数据结构C++版-线性表

    PS:资料来源慕课网视频. 一.什么是线性表 线性表是n个数据元素的有限序列. 分类: 二.补充知识点 1.栈和队列有出操作.入操作,对应线性表(数组)为插入元素和删除元素,而线性表中要获取指定元素值 ...

  7. 网页重构应该避免的10大CSS糟糕用法

    对于网页重构来说,CSS禅意花园 是网页布局从 table 表格转到了 html +css 的标志 .这些年来,随着我们的网站越来越复杂:html5,css3,新的技术.新的属性,越来越多的开发者开始 ...

  8. 文本数据增量导入到mysql

    实现思路:       实现Java读取TXT文件中的内容并存到内存,将内存中的数据和mysql 数据库里面某张表数据的字段做一个比较,如果比较内存中的数据在mysql 里存在则不做处理,如果不存在则 ...

  9. spark-submit 应用程序第三方jar文件

    第一种方式:打包到jar应用程序 操作:将第三方jar文件打包到最终形成的spark应用程序jar文件中 应用场景:第三方jar文件比较小,应用的地方比较少 第二种方式:spark-submit 参数 ...

  10. uoj213 【UNR #1】争夺圣杯

    题目 设\(f_i\)表示所有长度为\(i\)的区间的最大值的和,求\(\bigoplus \sum_{i=1}^nf_i\) 不难发现随机数据非常好做 由于一个随机序列的前缀最大值期望只会变化\(\ ...