首页 > 其他分享 >Q查询和F查询

Q查询和F查询

时间:2023-02-27 20:47:31浏览次数:28  
标签:__ Book 对象 查询 filter objects

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

标签:__,Book,对象,查询,filter,objects
From: https://www.cnblogs.com/vless/p/17161797.html

相关文章

  • django多表查询
      注意事项: 表的名称myapp_modelName,是根据模型中的元数据自动生成的,也可以覆写为别的名称 id 字段是自动添加的 对于外键字段,Django会在字段名上添加"......
  • DQL基础查询/条件查询
    基础查询:selectname,agefromstu; --查两列select * from stu;--查全部,不推荐selectdistinctaddressfromstu;--......
  • Linux操作系统下查询NVMe盘符、Slot ID和Bus ID的对应关系
    在拆卸NVMePCIe固态硬盘时,需要查询Linux操作系统下NVMe盘符、SlotID和BusID的对应关系。操作步骤打开操作系统命令终端。依次执行cd/sys/bus/pci/slots和ll命令,找到......
  • mysql开启慢查询日志
    前言:mysql数据库默认没有开启慢查询日志,需要我们手动去设置这个参数;慢查询,它的主要作用是定位那些执行时间比较长的sql语句,运行时间超过long_query_time值的SQL(long_query_......
  • mysql查询近N天的数据
    今天select*from表名whereto_days(时间字段名)=to_days(now());昨天SELECT*FROM表名WHERETO_DAYS(NOW())-TO_DAYS(时间字段名)<=17天SELECT*F......
  • MySQL根据经纬度和距离查询最近的数据
    [lat]:输入的纬度[lon]:输入的经度[distance]:查询距离内的数据,单位mSELECT*FROM(SELECTidlon,lat......
  • db2 模糊查询
    今天在书写接口的时候遇到一个问题,查询接口需要模糊查询,我在百度上搜索mybatils的模糊查询不行,最后发现,mysql的模糊查询concat方法和db2的不一样。然后就找到领一种方法,使......
  • SQL SERVER 生僻字查询问题和关键字COLLATE
       先说问题,生僻字查询的问题,有的时候我们的数据里包含一些生僻字,在查询用Like模糊匹配的时候,发现有的查询不准确,测试数据如下:1--测试数据2ifnotobject_id(N'......
  • ELK kibana查询与过滤
    在kibana中,可通过搜索查询过滤事务或者在visualization界面点击元素过滤。创建查询在Discover界面的搜索栏输入要查询的字段。查询语法是基于Lucene的查询语法。允许布尔......
  • mybatis-关联查询3-自关联查询
      一对多的方式处理查询指定栏目的所有子孙栏目    查询指定栏目及其所有子孙栏目 多对 一的方式处理   ......