#F与Q查询
#*************************** F 查询 ********************
# F 查询数据库中的其他字段!!!
#1.查询库存数大于卖出数的书籍
from django.db.models import F
res=models.Books.objects.filter(kucun__gt=F('maichu')).values('title')
print(res)
#结果:<QuerySet [{'title': '西游记2'}]> #2.将所有书的价格上涨100块
from django.db.models import F
res=models.Books.objects.all().update(price=F('price')+100)
print(res)
#结果,价格在原来的基础上都增加了100块 #3.将所有书的名称后面全部加上“爆款”后缀,了解知识点
# 操作字符串数据需要借助于concat方法
from django.db.models.functions import Concat
from django.db.models import F
from django.db.models import Value
res=models.Books.objects.update(title=Concat(F('title'),Value('新款')))
print(res)
#结果:书的名字上都加上了后缀 #4.按照表中的字段分组
res=models.Publish.objects.values('想要分组的字段名').annotate(min_price=Min('book__price'))
print(res) #*************************** Q 查询 ******************** from django.db.models import Q
# Q 查询中 | 管道符就是代表或者的关系
# Q 查询中 ~ 波浪线就是代表not的关系
#1.查询一下书籍名称是张三丰或者库存数是500的书
res=models.Books.objects.filter(Q(title='张三丰')|Q(kucun=500))
print(res)
#结果:<QuerySet [<Books: 张三丰>, <Books: 吝啬鬼>]> res = models.Books.objects.filter(~Q(title='张三丰') | Q(kucun=500))
print(res)
#结果:<QuerySet [<Books: 吝啬鬼>, <Books: 西游记>, <Books: 西游记2>]> #*************** Q 对象高级用法,通过字符串就能查询出数据 **************
from django.db.models import Q
#查询书籍名称是张三丰或者库存数量大于500的书籍
q=Q()
q.connector='or' #默认是and,此处修改为了 or
q.children.append(('title','张三丰'))
q.children.append(('kucun__gt',500))
res=models.Books.objects.filter(q)
print(res)
#结果:<QuerySet [<Books: 张三丰>, <Books: 西游记>, <Books: 西游记2>]>
#SELECT `app01_books`.`id`, `app01_books`.`title`, `app01_books`.`price`, `app01_books`.`kucun`, `app01_books`.`maichu` FROM `app01_books` WHERE (`app01_books`.`title` = '张三丰' or `app01_books`.`kucun` > 500) LIMIT 21; args=('张三丰', 500) 查询书籍名称不是张三丰或者库存数量小于500的书籍
q = Q()
q.connector = 'or' # 默认是and,此处修改为了 or
q.children.append(('title', '张三丰'))
q.children.append(('kucun__gt', 500))
res = models.Books.objects.filter(~q) #取反
print(res)
#结果:<QuerySet [<Books: 吝啬鬼>]>
#SELECT `app01_books`.`id`, `app01_books`.`title`, `app01_books`.`price`, `app01_books`.`kucun`, `app01_books`.`maichu` FROM `app01_books` WHERE NOT ((`app01_books`.`title` = '张三丰' or `app01_books`.`kucun` > 500)) LIMIT 21; args=('张三丰', 500)

django基础之day05,F与Q查询,Q查询的高级用法的更多相关文章

  1. django基础之day05,orm字段参数,自定义需要的字段,orm中的事务操作

    orm字段和参数 charfield varchar integerfield int bigintegerfield bigint emailfield varchar(254) datefield ...

  2. Django 聚合查询 分组查询 F与Q查询

    一.聚合查询 需要导入模块:from django.db.models import Max, Min, Sum, Count, Avg 关键语法:aggregate(聚合结果别名 = 聚合函数(参数 ...

  3. SolrNet高级用法(分页、Facet查询、任意分组)

    前言 如果你在系统中用到了Solr的话,那么肯定会碰到从Solr中反推数据的需求,基于数据库数据生产索引后,那么Solr索引的数据相对准确,在电商需求中经常会碰到菜单.导航分类(比如电脑.PC的话会有 ...

  4. Django基础(5) ----基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询

    一.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接模型(mode ...

  5. Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终端打印SQL语句,脚本调试)

    Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终 ...

  6. Django first()和last() F查询以及Q查询

    一.first()和last() 分别返回queryset的第一项与最后一项,具体用法如下: p = Blog.objects.order_by('title').first() 等同于: try: ...

  7. django系列5.5--分组查询,聚合查询,F查询,Q查询,脚本中调用django环境

    一.聚合查询 aggregate(*args, **args) 先引入需要的包,再使用聚合查询 #计算所有图书的平均价格 from django.db.models import Avg Book.o ...

  8. django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066

    1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate(*args,**kwargs) : 通过对QuerySet进行计算 ,返回一个聚合值的字典. ...

  9. Django ORM (四) annotate,F,Q 查询

    annotate 可以通过计算查询结果中每一个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和),即为查询集的每一项生成聚合. from django.shortcuts import re ...

随机推荐

  1. 读取JDK API文档,并根据单词出现频率排序

    1,拿到 API 文档 登录 https://docs.oracle.com/javase/8/docs/api/ , 选中特定的类,然后 copy 其中的内容, 放入 TXT 文件中 , 2,读取T ...

  2. centos7清理矿机木马qw3xT,kpgrbcc

    腾讯云报告了root口令被暴力破解,并种了木马kpgrbcc 昨晚找到/usr/bin/ rm -rf kpgrbcc 删除 rm -rf kpgrbcb 删除 并ps -ef | grep kpg ...

  3. URL基本语法

    1.URL全称为Uniform Resource Locator,即统一资源定位符.对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址.互联网上的每个文件都有一个唯一 ...

  4. android clipChildren 的使用与遇到的困难

    案例 在一次我写画板模块的时候,布局比较普通,但是需要子元素溢出父元素.其中一小块布局如下所示: 红色部分需要溢出,这个时候我想到了clipChildren. clipChildren 就是说我可以不 ...

  5. 金蝶天燕中间拒绝put、delete请求解决方案

    项目要求支持国产化,那就国产化呗!使用金蝶天燕中间件替代weblogic,一切部署好后发现所有以put.delete请求的按钮全部无效,原因是中间件配置文件默认拒绝put.delete请求 解决方案为 ...

  6. Java项目多版本部署及快速回滚(含完整命令)

    1. 场景描述 java项目linux环境下快速部署,以前介绍过,今天主要结合linux的软连接,实现版本的快速切换(回滚),包含完整的start.sh与stop.sh,只需修改包名和路径即可运行,有 ...

  7. 【JavaEE】之MyBatis输出映射

    MyBatis中的输出映射有两种:resultType和resultMap. 1.resultType 使用resultType进行结果映射时,只有当查询结果中有至少一列的名称和resultType指 ...

  8. JVM虚拟机详解+Tomcat性能优化

    1.JVM(java virtual mechinal) ()JVM有完善的硬件架构,如处理器.堆栈.寄存器当,还具有相应的指令系统. ()JVM的主要工作时解释自己的指令集(即字节码),并映射到本地 ...

  9. 饶有特色的 CSS3 展示横条.html

     

  10. Flask 蓝图机制及应用

    我们都知道 flask 是一个轻量级的 web 框架,相对于其他同类型框架更为灵活.轻便.安全且容易上手.开发者可以随意编写自己想要的项目结构,同时还有很多的第三方库供君选择.但是灵活的同时也带来了相 ...