一:F与Q查询

1.F查询的作用
能够帮助你直接获取到列表中某个字段对应的数据

注意:
在操作字符串类型的数据的时候, F不能够直接做到字符串的拼接
2.查询卖出书大于库存数的书籍
# 导入F查询
from django.db.models import F # F 将书籍 库存字段对应的值 依序取出 并进行比较
res = models.Book.objects.filter(maichu__gt=F('kucun'))
print(res)
3.将所有书籍的价格提升500块
# F 将书籍 价格字段对应的值 依序 加500元
models.Book.objects.update(price=F('price') + 500)
4.将所有书的名称后面加上爆款两个字
注意:
在操作字符类型的数据的时候 F不能够直接做到字符串的拼接 # 修改或拼接字符串数据 需要导入以下两个模块
from django.db.models.functions import Concat
from django.db.models import Value # F 将书籍内的 title字段尾部 依序 加上 爆款 拼接字符串
models.Book.objects.update(title=Concat(F('title'), Value('爆款'))) models.Book.objects.update(title=F('title') + '爆款') # 错误 所有的名称会全部变成空白

二:Q查询

1.Q查询的作用
filter()等方法中的关键字参数查询都是一起进行"and",如果你需要执行更复杂的查询(列如ORM语句),你可以使用Q对象。
2..查询卖出数0大于100或者价格小于60的书籍
# 导入Q模块
from django.db.models import Q # Q包裹逗号分割 还是adn关系
res = models.Book.objects.filter(Q(maichu__gt=100), Q(price__lt=600))
# | or关系
res = models.Book.objects.filter(Q(maichu__gt=100)|Q(price__lt=600))
# ~ not关系
res = models.Book.objects.filter(~Q(maichu__gt=100)|Q(price__lt=600))
# print(res)
3.Q的高阶用法
  • 能够将查询条件的左边也变成字符串的形式 而 不是变量形式
# 先产生一个空对象  实列化
q = Q()
q.connector = 'or' # and修改成or
# q对象里面有一个children
q.children.append(('maichu__gt', 100))
# 第一个元素就会被当作查询条件的左边 第二个元素会被当作查询条件右边
q.children.append(('price__lt', 600))
res = models.Book.objects.filter(q) # filter 除了可以放条件 还可以放对象
print(res) # 默认还是and关系

4.Q高阶用法
1.可以在去对象内 children里面 无限制的添加元素 添加元组,两个元素。
2.而且还支持修改 or and not
3.默认是and

Django框架F查询与Q查询(全面了解)的更多相关文章

  1. python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)

    阅读目录 F查询和Q查询 事务 一.F查询和Q查询 1.F查询 查询前的准备 class Product(models.Model): name = models.CharField(max_leng ...

  2. Django框架(九)-- 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询、聚合查询、分组查询、F查询与Q查询

    一.创建多表模型 一对一:OneToOneField 一对多:ForeignKey 多对多:ManyToManyField 创建表时,会自动添加一个nid字段,并且自增,所以id可以不用手动创建 On ...

  3. Django框架第七篇(模型层)--多表操作:一对多/多对多增删改,跨表查询(基于对象、基于双下划线跨表查询),聚合查询,分组查询,F查询与Q查询

    一.多表操作 一对多字段的增删改(book表和publish表是一对多关系,publish_id字段) 增  create publish_id 传数字   (publish_id是数据库显示的字段名 ...

  4. Django框架(十)—— 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询、聚合查询、分组查询、F查询与Q查询

    目录 多表操作:增删改,基于对象/双下划线的跨表查询.聚合查询.分组查询.F查询与Q查询 一.创建多表模型 二.一对多增删改表记录 1.一对多添加记录 2.一对多删除记录 3.一对多修改记录 三.一对 ...

  5. Django框架:8、聚合查询、分组查询、F与Q查询、ORM查询优化、ORM事务操作、ORM常用字段类型、ORM常用字段参数

    Django 数据库 目录 Django 数据库 一.聚合查询 二.分组查询 三.F查询与Q查询 1.F查询 2.Q查询 3.Q查询进阶操作 四.ORM查询优化 1.only与defer 五.ORM事 ...

  6. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  7. Django中的ORM相关操作:F查询,Q查询,事物,ORM执行原生SQL

    一    F查询与Q查询: 1 . F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的 ...

  8. Django的mode的分组查询和聚合查询和F查询和Q查询

    1.聚合查询 # 聚合函数aggregate,求指定字段的最大值,最小值,平均值,和的值,方法如下 from django.db.models import Avg from django.db.mo ...

  9. Django Mysql数据库-F查询和Q查询

    一.F查询和Q查询 F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较.F() 的 ...

随机推荐

  1. 我的Vue之旅、05 导航栏、登录、注册 (Mobile)

    第一期 · 使用 Vue 3.1 + TypeScript + Router + Tailwind.css 构建手机底部导航栏.仿B站的登录.注册页面. 代码仓库 alicepolice/Vue-05 ...

  2. P3834 【模板】可持久化线段树 2

    P3834 主席树模板,求区间第k小. 1 #include <bits/stdc++.h> 2 using namespace std; 3 #define lc tr[i].ch[0] ...

  3. KubeEdge SIG AI发布首个分布式协同AI Benchmark调研

    摘要:AI Benchmark旨在衡量AI模型的性能和效能. 本文分享自华为云社区<KubeEdge SIG AI发布首个分布式协同AI Benchmark调研>,作者:KubeEdge ...

  4. 前端开发日常——CSS动画无限轮播

    近来没有什么值得写的东西,空闲的时候帮前端的同学做了些大屏上的展示模块,就放在这里写写吧,手把手"需求->设计-> 实现",受众偏新手向. 为了直观便于理解, 直接把结 ...

  5. Ansible 批处理实战

    软件简介 Ansible 是一款自动化运维工具,基于 Python 开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功 ...

  6. 关于引用JS和CSS文件刷新浏览器缓存问题,部署服务器后客户端样式不刷新

    问题描述 对样式的css文件进行了修改,部署到服务器后访问发现页面展示不正常,但是刷新之后就会展示正常. 问题分析 研究之后发现可能的原因有 css文件过大,加载缓慢 本地缓存问题,虽然服务器修改了c ...

  7. 基于SqlSugar的开发框架循序渐进介绍(20)-- 在基于UniApp+Vue的移动端实现多条件查询的处理

    在做一些常规应用的时候,我们往往需要确定条件的内容,以便在后台进行区分的进行精确查询,在移动端,由于受限于屏幕界面的情况,一般会对多个指定的条件进行模糊的搜索,而这个搜索的处理,也是和前者强类型的条件 ...

  8. Multi-Channel PCIe QDMA Subsystem

    可交付资料: 详细的用户手册 Design File:Post-synthesis EDIF netlist or RTL Source Timing and layout constraints,T ...

  9. Linux学习环境搭建流程

    Linux学习环境搭建 Vmware安装 VMware下载:https://www.vmware.com/go/getworkstation-win 运行安装程序,该重启安装驱动就重启,不需要就下一步 ...

  10. 执行xxx.sh脚本的两种方式

    因公司测试环境的登录模式有2种,大佬们直接写了个脚本完成一键切换,看了其中的脚本文件,其中出现了send "sh out.sh\r":一直疑惑这里的sh out.sh的意思...查 ...