Django中数据查询(万能下换线,聚合,F,Q)
数据查询中万能的下划线基本用法:
__contains: 包含
__icontains: 包含(忽略大小写)
__startswith: 以什么开头
__istartswith: 以什么开头(忽略大小写)
__endswith
__iendswith
__gt: 大于
__gte: 大于等于
__lt: 小于
__lte: 小于等于
__rang: 范围
models.Book.objects.filter(pub_date__range=('2015-01-01','2016-01-01'))
__isnull: 判断是否为空
__regex: 正则匹配
Entry.objects.get(title_regex=r'^(An|The) +')
__regex: 不区分大小写的正则匹配
Entry.objects.get(title_regex=r'^(an|the) +')
models.Book.objects.exclude(price=None):反查询
聚合:
from django.db.models import Avg,Max,Mix,Sum,Count
Book.objects.all().aggregate(Avg('price')
models.Book.objects.values('publisher__name').annotate(Count('id'))
models.Book.objects.values('publisher__name').annotate(Avg('price'))
models.Book.objects.filter(name_contains='J',pub_date__year='2016')
Q 语句:
默认是AND
>>> from django.db.models import Q
>>> Q(put_date__year = '2016')
<Q: (AND: ('put_date__year', '2016'))>
AND
>>> Q(put_date__year =2016) , Q(put_date__year=2018)
(<Q: (AND: ('put_date__year', 2016))>, <Q: (AND: ('put_date__year', 2018))>)
加个| 为or的意思
>>> Q(put_date__year =2016)|Q(put_date__year=2018)
<Q: (OR: ('put_date__year', 2016), ('put_date__year', 2018))>
~ 为取非
>>> Q(put_date__year =2016)| ~ Q(put_date__year=2018)
<Q: (OR: ('put_date__year', 2016), (NOT (AND: ('put_date__year', 2018))))>
AND和OR
>>> Q(put_date__year =2016) , Q(put_date__year=2018)| Q(put_date__year=2019)
(<Q: (AND: ('put_date__year', 2016))>, <Q: (OR: ('put_date__year', 2018), ('put_date__year', 2019))>)
在生成条件语句后利用filter来进行查询
q = Q(put_date__year =2016)|Q(put_date__year=2018)
models.Book.objects.filter(q)
from django.db.models import Q # 导入Q
con = Q() # 创建Q对象 q1 = Q()
q1.connector = 'OR' # q1的元素为OR或的关系
q1.children.append(('id', 1))
q1.children.append(('id', 10))
q1.children.append(('id', 9)) q2 = Q()
q2.connector = 'OR' # q2的元素为OR或的关系
q2.children.append(('c1', 1))
q2.children.append(('c1', 10))
q2.children.append(('c1', 9)) con.add(q1, 'AND') # 将q1添加到con对象中,与其他的Q为且的关系
con.add(q2, 'AND') models.Tb1.objects.filter(con) #将总的Q对象添加到model的查找条件中
F 语句:
自修改
本表内两个字段比较
字段数据迁移
from django.db.models impport F
1.先查看所有的商品价格
models.Book.objects.values('price')
2.所有商品价格+10
models.Book.objects.update(price=F('price')+10)
# 本表内两个字段比较
models.Book.objects.filter(num1__get= F('num2')) # 仅仅为例子
# 表内字段数据迁移
1.memo字段默认为空,把memo字段设为为同表中的name字段的值
models.Book.objects.update(memo=F('name'))
2.models.Book.objects.values('memo,name')
Django中数据查询(万能下换线,聚合,F,Q)的更多相关文章
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句SQL基本用法
本文展示三种在Hibernate中使用SQL语句进行数据查询基本用法 1.基本查询 2.条件查询 3.分页查询 package com.Gary.dao; import java.util.List; ...
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句Criteria基本用法
Criteria进行数据查询与HQL和SQL的区别是Criteria完全是面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹,使用Criteria 查询数据包括以下步骤: 1. 通过sessi ...
- 分组\聚合\F\Q查询
一.分组和聚合查询 1.aggregate(*args,**kwargs) 聚合函数 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每一个参数都指定一个包含在字典中的 ...
- django orm 数据查询详解
一 在django里面创建模型 from django.db import models class Blog(models.Model): name = models.CharField(max_l ...
- django对数据查询结果进行排序的方法
在你的 Django 应用中,你或许希望根据某字段的值对检索结果排序,比如说,按字母顺序. 那么,使用 order_by() 这个方法就可以搞定了. ? 1 2 >>> Publis ...
- Mysql对表中 数据 查询的操作 DQL
准备数据,倒入sql文件 运行sql文件 得到四张表 select * from 表名 * 代表全部 1.AS子句作为别名 select studentname as "姓名" ...
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句HQL基本用法
HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式. ...
- SQL Server 中数据查询注意事项
1.查询语句不用区分大小写,而且即使每张表的表名或者列名出现大写字母,在写查询语句的时候也不用区分大小写,查询结果保持一致,所以查询语句小写即可. 2.在写查询语句的时候列名不需要带单引号,数值型的字 ...
- 系统的了解DJANGO中数据MODULES的相关性引用
数据库结构如下: from django.db import models class Blog(models.Model): name = models.CharField(max_length=1 ...
随机推荐
- nyoj 还是回文
还是回文 时间限制:2000 ms | 内存限制:65535 KB 难度:3 描述 判断回文串很简单,把字符串变成回文串也不难.现在我们增加点难度,给出一串字符(全部是小写字母),添加或删除一个字符, ...
- [笔试题目]使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?
[笔试题目] 使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍? StringBuffer 底层是依赖了一个字符数组才能存储字符 ...
- JAVA_SE基础——8.基本数据类型
基本数据类型有:整数类型.浮点类型.字符类型.布尔类型 整数类型 整数类型用来存储整数数值,即没有小数部分的数值.与C.C++语言相同,整数在Java语言中有3种表示形式:十进制.八进制和十六进制. ...
- django三种文件下载方式
一.概述 在实际的项目中很多时候需要用到下载功能,如导excel.pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍django中的文件下载. ...
- Python内置函数(19)——oct
英文文档: oct(x) Convert an integer number to an octal string. The result is a valid Python expression. ...
- nodejs 使用CAS 实现 单点登录(SSO) 【开源库实现,简单】
大部分企业使用 java 开发业务系统, 针对java cas的认证 demo 比较多 ,还有PHPCAS ,标准的参考这里: phpCAS 的使用 整理登录流程如下图,图片来自网络 找了不少资料,n ...
- 什么是MQTT协议?
MQTT协议介绍 MQTT协议是什么? MQTT(Message Queuing Telemetry Transport Protocol)的全称是消息队列遥感传输协议的缩写,是一种基于轻量级代理的发 ...
- api-gateway实践(10)新服务网关 - OpenID Connect
网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...
- Linux实用的网站
ABCDOCKER网站 https://www.abcdocker.com/ 徐亮伟网站 http://www.xuliangwei.com/ 安装centos物理服务 ...
- EasyUI 数据网格行过滤
前段时间发现一个GridView很有用的功能,可以筛选数据,实现起来很简单 一.添加一个引用,这个可以自己去网上下载 <script type="text/javascript&quo ...