Q查询和F查询
2024-10-21 13:04:01
F查询与Q查询
F查询
Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。
# 查询评论数大于收藏数的书籍
from django.db.models import F
Book.objects.filter(commnetNum__lt=F('keepNum'))
Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取模的操作。
# 查询评论数大于收藏数2倍的书籍
Book.objects.filter(commnetNum__lt=F('keepNum')*2)
修改操作也可以使用F函数,比如将每一本书的价格提高30元:
Book.objects.all().update(price=F("price")+30)
Q查询
filter() 等方法中的关键字参数查询都是一起进行“AND” 的。 如果你需要执行更复杂的查询(例如OR 语句),你可以使用Q 对象。
from django.db.models import Q
Q(title__startswith='Py')
Q 对象可以使用& 和| 操作符组合起来。当一个操作符在两个Q 对象上使用时,它产生一个新的Q 对象。
bookList=Book.objects.filter(Q(authors__name="yuan")|Q(authors__name="egon"))
等同于下面的SQL WHERE 子句:
WHERE name ="yuan" OR name ="egon"
你可以组合& 和| 操作符以及使用括号进行分组来编写任意复杂的Q 对象。同时,Q 对象可以使用~ 操作符取反,这允许组合正常的查询和取反(NOT) 查询:
查询函数可以混合使用Q 对象和关键字参数。所有提供给查询函数的参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数的前面。例如:
bookList=Book.objects.filter(Q(publishDate__year=2016) | Q(publishDate__year=2017), title__icontains="python")
最新文章
- PHP中使用CURL请求页面,使用fiddler进行抓包
- 看jpg和png图片
- libev学习(一)
- 【JAVA集合框架之Set】
- ACM cigarettes
- jquery控制文字内容溢出用点点点(…)省略号表示
- 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎
- 克隆复制可使用原型( Prototype)设计模式
- [转]关于int整形变量占有字节问题
- hdu3007Buried memory(最小圆覆盖)
- ANT的下载和安装
- UI中的七种手势
- iOS 自我检測
- 三次握手wireshark抓包分析,成功握手和失败握手
- 10.3 Vue 路由系统
- Python - 浅谈Python的编译与反编译
- day06 内存地址 小数据池缓存机制
- CMMI三个过程域的流程及达到特定目标、共性目标的要求(RD需求管理过程,PI产品集成过程,TS技术解决方案)
- .NetCore 中使用AppMetrics向InfluxDB中添加监控数据并通过Grafana图像分析
- numpy中的广播(Broadcasting)
热门文章
- Python 01-Unittest的使用 unittest简单应用
- 将python2.7项目转为Python3问题记录
- springmvc关于通过使用路径占位符出现中文乱码解决办法
- 使用Java API操作Neo4j
- sql server某列根据逗号转多行,其它字段不变
- (app笔记)Memory Fill内存填充
- USB从机主动断开连接
- CompletableFuture的thenCompose使用具体说明
- 错误	C2664	“int fputs(const char *,FILE *)”: 无法将参数 1 从“char”转换为“const char *”解决方法
- [Swift]Swift图片显示方式设置,控件UIImageView的contentMode属性设置