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")

最新文章

  1. PHP中使用CURL请求页面,使用fiddler进行抓包
  2. 看jpg和png图片
  3. libev学习(一)
  4. 【JAVA集合框架之Set】
  5. ACM cigarettes
  6. jquery控制文字内容溢出用点点点(…)省略号表示
  7. 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎
  8. 克隆复制可使用原型( Prototype)设计模式
  9. [转]关于int整形变量占有字节问题
  10. hdu3007Buried memory(最小圆覆盖)
  11. ANT的下载和安装
  12. UI中的七种手势
  13. iOS 自我检測
  14. 三次握手wireshark抓包分析,成功握手和失败握手
  15. 10.3 Vue 路由系统
  16. Python - 浅谈Python的编译与反编译
  17. day06 内存地址 小数据池缓存机制
  18. CMMI三个过程域的流程及达到特定目标、共性目标的要求(RD需求管理过程,PI产品集成过程,TS技术解决方案)
  19. .NetCore 中使用AppMetrics向InfluxDB中添加监控数据并通过Grafana图像分析
  20. numpy中的广播(Broadcasting)

热门文章

  1. Python 01-Unittest的使用 unittest简单应用
  2. 将python2.7项目转为Python3问题记录
  3. springmvc关于通过使用路径占位符出现中文乱码解决办法
  4. 使用Java API操作Neo4j
  5. sql server某列根据逗号转多行,其它字段不变
  6. (app笔记)Memory Fill内存填充
  7. USB从机主动断开连接
  8. CompletableFuture的thenCompose使用具体说明
  9. 错误 C2664 “int fputs(const char *,FILE *)”: 无法将参数 1 从“char”转换为“const char *”解决方法
  10. [Swift]Swift图片显示方式设置,控件UIImageView的contentMode属性设置