【django】 F 和 Q 对象
一、 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 对象相关推荐
- 004--Django(定义模型类、数据的增删改查、F和Q对象)
1.创建数据库 mysql -uroot -pmysqlcreate database django_demo charset=utf8; 2.配置mysql数据库 在settings.py 中配置数 ...
- Django中数据对象的增删改查常用方法,自定义管理器类,过滤器及F和Q对象等知识点总结
Django对象的增删改查 我们为了对django对象的增删改查进行总结,先在model.py文件中创建类便于举例 定义学生: class Students(models.Model):sname=m ...
- django F和Q 关键字使用
F 的使用: 想给表里每个价格加上一百就要用上F,直接加是不行的. 转载于:https://www.cnblogs.com/wuheng-123/p/9561422.html
- Django Q对象
使用Q 对象进行复杂的查询¶ filter() 等方法中的关键字参数查询都是一起进行"AND" 的. 如果你需要执行更复杂的查询(例如OR 语句),你可以使用Q 对象. Q 对象 ...
- Django框架(12.Django中模型类高阶查询(Q对象以及F对象 和聚合函数查询))
Q对象 作用:用于查询时条件之间的逻辑关系.not and or,可以对Q对象进行 & | ~ 操作. & : 且 | : 或 ~ :非: 就 ...
- Django中的F对象和Q对象
F对象 可以获取到自己的属性值 实现自己的属性自己的属性关联的复杂条件 支持运算 Q对象 Q对象实际上是对条件的一个封装 封装后支持逻辑运算 与或非 & | ~ 支持嵌套 例子 from dj ...
- 第三百零九节,Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、并且——queryset对象序列化...
第三百零九节,Django框架,models.py模块,数据库操作--F()和Q()运算符:|或者.&并且 F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from dj ...
- Django运算表达式与Q对象/F对象
Django运算表达式与Q对象/F对象 1 模型查询 概述: 1 查询集:表示从数据库中获取的对象的集合 2 查询集可以有多个过滤器,通过 逻辑运算符连接 3 过滤器就是一个函数,基于所给的参数限制查 ...
- Django学习笔记(3):使用模型类进行查询(查询函数、F对象、Q对象、聚合函数、查询集、模型类关系、关联查询、自关联、管理器)
文章目录 1.查询函数 2.F对象 3.Q对象 4.聚合函数 5.Count函数 6.查询集 查询集的特性 对查询集进行切片 判断一个查询集中是否有数据 7.模型类之间的关系 一对多关系 多对多关系 ...
最新文章
- 转:AbstractQueuedSynchronizer的介绍和原理分析
- 斯坦佛编程教程-Unix编程工具(二)
- Spring 已经实现的线程池
- 三星10年旗舰彻底终结 5年前35次爆炸惊天下
- Vue.js过滤器概述
- 统计与机器学习的异同
- 路由访问控制列表的设计
- leetcode 456. 132 Pattern 132模式 题解(栈)
- python Only timezones from the pytz library are supported
- 怎样查看计算机注册表上的游戏,win7 32位旗舰版电脑中如何通过注册表修复游戏登陆问题...
- java在pdf文件中插入字_怎么在PDF文件中添加文字文本框
- c语言程序设计 大学考试题库,网络教育成考大学C语言程序设计考试题库及答案...
- Vuex仿饿了么购物车功能
- 持续不定期更新:CFDC++之拟一维喷管流动的数值解(2)
- 【从零基础学习C语言】指针与数组—第七篇
- python四级中考有用的_中考又出新政策:一半的孩子将上不了高中?
- 两个进程共享内存,一个写,一个读
- 缺一位身份证号码时识别计算
- docker 安装mysql、canal、redis实现redis和mysql缓存一致性
- TCP/IP入门详解--业内最佳
热门文章
- oracle vm concat指定分隔符,重写Oracle的wm_concat函数,自定义分隔符、排序
- 人工智能时代的数据中心该怎么建?腾讯给出了自己的答案
- Docker Toolbox:Docker Toolbox的简介、安装、使用方法之详细攻略
- DL之FCN:FCN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- NVIDIA之AI Course:Getting Started with AI on Jetson Nano—Class notes(一)
- Dataset之OttoGroup:OttoGroup数据集的简介、下载、案例应用之详细攻略
- HighNewTech:18.11.07—第五届世界互联网大会—互联网届的奥斯卡大奖—15张PPT见证15项世界互联网领先科技成果
- Py之wxPython:利用wxPython设计CMD软件窗口进行交互可视化
- CV之CycleGAN:CycleGAN算法相关思路配图、论文集合
- ML/DL:关于机器学习、深度学习算法模型的选择