django数据查询之F查询和Q查询
仅仅靠单一的关键字参数查询已经很难满足查询要求。此时Django为我们提供了F和Q查询:
 # F 使用查询条件的值,专门取对象中某列值的操作
     # from django.db.models import F
     # models.Tb1.objects.update(num=F('num')+1)
 # Q 构建搜索条件
     from django.db.models import Q
     #1 Q对象(django.db.models.Q)可以对关键字参数进行封装,从而更好地应用多个查询
     q1=models.Book.objects.filter(Q(title__startswith='P')).all()
     print(q1)#[<Book: Python>, <Book: Perl>]
     # 2、可以组合使用&,|操作符,当一个操作符是用于两个Q的对象,它产生一个新的Q对象。
     Q(title__startswith='P') | Q(title__startswith='J')
     # 3、Q对象可以用~操作符放在前面表示否定,也可允许否定与不否定形式的组合
     Q(title__startswith='P') | ~Q(pub_date__year=2005)
     # 4、应用范围:
     # Each lookup function that takes keyword-arguments (e.g. filter(),
     #  exclude(), get()) can also be passed one or more Q objects as
     # positional (not-named) arguments. If you provide multiple Q object
     # arguments to a lookup function, the arguments will be “AND”ed
     # together. For example:
     Book.objects.get(
         Q(title__startswith='P'),
         Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6))
     )
     #sql:
     # SELECT * from polls WHERE question LIKE 'P%'
     #     AND (pub_date = '2005-05-02' OR pub_date = '2005-05-06')
     # import datetime
     # e=datetime.date(2005,5,6)  #2005-05-06
     # 5、Q对象可以与关键字参数查询一起使用,不过一定要把Q对象放在关键字参数查询的前面。
     # 正确:
     Book.objects.get(
         Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)),
         title__startswith='P')
     # 错误:
     Book.objects.get(
         question__startswith='P',
         Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)))
参考来源:https://www.cnblogs.com/liuwchao/articles/9831942.html
django数据查询之F查询和Q查询的更多相关文章
- Django的mode的分组查询和聚合查询和F查询和Q查询
		1.聚合查询 # 聚合函数aggregate,求指定字段的最大值,最小值,平均值,和的值,方法如下 from django.db.models import Avg from django.db.mo ... 
- django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066
		1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate(*args,**kwargs) : 通过对QuerySet进行计算 ,返回一个聚合值的字典. ... 
- python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)
		阅读目录 F查询和Q查询 事务 一.F查询和Q查询 1.F查询 查询前的准备 class Product(models.Model): name = models.CharField(max_leng ... 
- Django中多表的增删改查操作及聚合查询、F、Q查询
		一.创建表 创建四个表:书籍,出版社,作者,作者详细信息 四个表之间关系:书籍和作者多对多,作者和作者详细信息一对一,出版社和书籍一对多 创建一对一的关系:OneToOne("要绑定关系的表 ... 
- Django【第7篇】:Django之ORM跨表操作(聚合查询,分组查询,F和Q查询等)
		django之跨表查询及添加记录 一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); ... 
- Django框架(十)—— 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询、聚合查询、分组查询、F查询与Q查询
		目录 多表操作:增删改,基于对象/双下划线的跨表查询.聚合查询.分组查询.F查询与Q查询 一.创建多表模型 二.一对多增删改表记录 1.一对多添加记录 2.一对多删除记录 3.一对多修改记录 三.一对 ... 
- Django Mysql数据库-F查询和Q查询
		一.F查询和Q查询 F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较.F() 的 ... 
- 八、django学习之分组查询、F查询和Q查询
		分组查询.F查询和Q查询 分组查询 统计每个出版社出版的书籍的平均价格 第一种方式 obj = models.Book.objects.values('publishs_id').annotate(a ... 
- Django框架08 /聚合查询、分组、F/Q查询、原生sql相关
		Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 目录 Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 1. 聚合查询 2. 分组 3. F查询和Q查询 4. o ... 
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
		models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ... 
随机推荐
- [PKUWC2018] Minimax
			Description 给定一棵 \(n\) 个节点的树,每个节点最多有两个子节点. 如果 \(x\) 是叶子,则给定 \(x\) 的权值:否则,它的权值有 \(p_x\) 的概率是它子节点中权值的较 ... 
- MySQL系列详解六:MySQL主从复制/半同步演示-技术流ken
			前言 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此时数据库集群就很好的解决了这个问题了.采用MySQL分布式集群,能够搭建一个高并发.负载均衡的集群服务器.在 ... 
- SpringCloud学习(一):微服务简介
			一.前情概要 1.单体架构是什么 1).一个归档包包含了应用所有功能的应用程序, 我们通常称之为单体应用. 2).架构单体应用的架构风格, 我们称之为单体架构, 这是一种比较传统的架构风格. 2.单体 ... 
- 【转】没那么难,谈CSS的设计模式
			什么是设计模式? 曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上:也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候. 先来看一下比较官方的解释:“设计模式(Design p ... 
- MVC学习之路【小补充】
			1]:在js中使用ViewBag 需要添加“”,否则程序报错,无法正常运行 .例如:正确格式 var ss = "@ViewBag.ts" 
- 将Python脚本打包成可执行文件
			Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安 ... 
- Ubuntu 安装 JDK8 的两种方式
			ubuntu 安装jdk 的两种方式: 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用pp ... 
- 【Oracle 11gR2】静默安装 db_install.rsp文件详解
			#################################################################### ## Copyright(c) Oracle Corporat ... 
- mybatis_15整合ehcache
			3.4 整合ehcache Mybatis本身是一个持久层框架,它不是专门的缓存框架,所以它对缓存的实现不够好,不能支持分布式. Ehcache是一个分布式的缓存框架. 什么是分布式 系统为了提高性能 ... 
- SpringMVC 与 REST.
			一.REST 的基础知识 我敢打赌这并不是你第一次听到或读到REST这个词.当讨论REST时,有一种常见的错误就是将其视为“基于URL的Web服务”—— 将REST作为另一种类型的RPC机制,只不过是 ... 
