一、 F对象

之前的查询都是对象的属性与常量值⽐较,两个属性怎么⽐较呢? 答:使⽤F对象,被定义在django.db.models中。
语法如下:
F(属性名)
1、例:查询播放量⼤于等于评论量的影⽚。

from django.db.models import F
FilmInfo.objects.filter(playcount__gt=F('commentcount'))
<QuerySet [<FilmInfo: 金刚狼>, <FilmInfo: 夺冠>, <FilmInfo: 我和我的家人>, <FilmInfo: shell>]>

可以在F对象上使⽤算数运算。
2、例:查询播放量⼤于2倍评论量的影⽚。

FilmInfo.objects.filter(playcount__gt=F('commentcount')*2)
<QuerySet [<FilmInfo: 金刚狼>, <FilmInfo: 夺冠>, <FilmInfo: 我和我的家人>, <FilmInfo: shell>]>

二、Q对象

多个过滤器逐个调⽤表示逻辑与关系,同sql语句中where部分的and关键字。
3、例:查询播放量⼤于20,并且编号⼩于1003的影⽚。

方法1
FilmInfo.objects.filter(playcount__gt=20,fid__lt=4)
<QuerySet [<FilmInfo: 金刚狼>, <FilmInfo: 夺冠>]>方法2
FilmInfo.objects.filter(playcount__gt=20).filter(fid__lt=4)
<QuerySet [<FilmInfo: 金刚狼>, <FilmInfo: 夺冠>]>

如果需要实现逻辑或or的查询需要使⽤Q()对象结合|运算符,Q对象被定义在django.db.models中
语法如下:
Q(属性名__运算符=值)
4、例:查询播放量⼤于20,或编号⼩于3的影⽚,只能使⽤Q对象实现
Q对象可以使⽤&、|连接,&表示逻辑与,|表示逻辑或。

FilmInfo.objects.filter(Q(playcount__gt=20) | Q(fid__lt=3))
<QuerySet [<FilmInfo: django>, <FilmInfo: 金刚狼>, <FilmInfo: 夺冠>, <FilmInfo: 我和我的家人>, <FilmInfo: shell>]>

Q对象前可以使⽤~操作符,表示⾮not。
5、例:查询编号不等于3的影⽚

FilmInfo.objects.filter(~Q(fid=3))
<QuerySet [<FilmInfo: django>, <FilmInfo: 我爱你中国>, <FilmInfo: 我爱你china>]>

【django】 F 和 Q 对象相关推荐

  1. 004--Django(定义模型类、数据的增删改查、F和Q对象)

    1.创建数据库 mysql -uroot -pmysqlcreate database django_demo charset=utf8; 2.配置mysql数据库 在settings.py 中配置数 ...

  2. Django中数据对象的增删改查常用方法,自定义管理器类,过滤器及F和Q对象等知识点总结

    Django对象的增删改查 我们为了对django对象的增删改查进行总结,先在model.py文件中创建类便于举例 定义学生: class Students(models.Model):sname=m ...

  3. django F和Q 关键字使用

    F 的使用: 想给表里每个价格加上一百就要用上F,直接加是不行的. 转载于:https://www.cnblogs.com/wuheng-123/p/9561422.html

  4. Django Q对象

    使用Q 对象进行复杂的查询¶ filter() 等方法中的关键字参数查询都是一起进行"AND" 的. 如果你需要执行更复杂的查询(例如OR 语句),你可以使用Q 对象. Q 对象 ...

  5. Django框架(12.Django中模型类高阶查询(Q对象以及F对象 和聚合函数查询))

    Q对象 作用:用于查询时条件之间的逻辑关系.not and or,可以对Q对象进行  &  |  ~  操作. & : 且        | :  或          ~ :非: 就 ...

  6. Django中的F对象和Q对象

    F对象 可以获取到自己的属性值 实现自己的属性自己的属性关联的复杂条件 支持运算 Q对象 Q对象实际上是对条件的一个封装 封装后支持逻辑运算 与或非 & | ~ 支持嵌套 例子 from dj ...

  7. 第三百零九节,Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、并且——queryset对象序列化...

    第三百零九节,Django框架,models.py模块,数据库操作--F()和Q()运算符:|或者.&并且 F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from dj ...

  8. Django运算表达式与Q对象/F对象

    Django运算表达式与Q对象/F对象 1 模型查询 概述: 1 查询集:表示从数据库中获取的对象的集合 2 查询集可以有多个过滤器,通过 逻辑运算符连接 3 过滤器就是一个函数,基于所给的参数限制查 ...

  9. Django学习笔记(3):使用模型类进行查询(查询函数、F对象、Q对象、聚合函数、查询集、模型类关系、关联查询、自关联、管理器)

    文章目录 1.查询函数 2.F对象 3.Q对象 4.聚合函数 5.Count函数 6.查询集 查询集的特性 对查询集进行切片 判断一个查询集中是否有数据 7.模型类之间的关系 一对多关系 多对多关系 ...

最新文章

  1. 转:AbstractQueuedSynchronizer的介绍和原理分析
  2. 斯坦佛编程教程-Unix编程工具(二)
  3. Spring 已经实现的线程池
  4. 三星10年旗舰彻底终结 5年前35次爆炸惊天下
  5. Vue.js过滤器概述
  6. 统计与机器学习的异同
  7. 路由访问控制列表的设计
  8. leetcode 456. 132 Pattern 132模式 题解(栈)
  9. python Only timezones from the pytz library are supported
  10. 怎样查看计算机注册表上的游戏,win7 32位旗舰版电脑中如何通过注册表修复游戏登陆问题...
  11. java在pdf文件中插入字_怎么在PDF文件中添加文字文本框
  12. c语言程序设计 大学考试题库,网络教育成考大学C语言程序设计考试题库及答案...
  13. Vuex仿饿了么购物车功能
  14. 持续不定期更新:CFDC++之拟一维喷管流动的数值解(2)
  15. 【从零基础学习C语言】指针与数组—第七篇
  16. python四级中考有用的_中考又出新政策:一半的孩子将上不了高中?
  17. 两个进程共享内存,一个写,一个读
  18. 缺一位身份证号码时识别计算
  19. docker 安装mysql、canal、redis实现redis和mysql缓存一致性
  20. TCP/IP入门详解--业内最佳

热门文章

  1. oracle vm concat指定分隔符,重写Oracle的wm_concat函数,自定义分隔符、排序
  2. 人工智能时代的数据中心该怎么建?腾讯给出了自己的答案
  3. Docker Toolbox:Docker Toolbox的简介、安装、使用方法之详细攻略
  4. DL之FCN:FCN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  5. NVIDIA之AI Course:Getting Started with AI on Jetson Nano—Class notes(一)
  6. Dataset之OttoGroup:OttoGroup数据集的简介、下载、案例应用之详细攻略
  7. HighNewTech:18.11.07—第五届世界互联网大会—互联网届的奥斯卡大奖—15张PPT见证15项世界互联网领先科技成果
  8. Py之wxPython:利用wxPython设计CMD软件窗口进行交互可视化
  9. CV之CycleGAN:CycleGAN算法相关思路配图、论文集合
  10. ML/DL:关于机器学习、深度学习算法模型的选择