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 ...
随机推荐
- Python format 格式化函数
str.format() 格式化字符串的函数 str.format(),它增强了字符串格式化的功能. 基本语法是通过 {} 和 : 来代替以前的 % format 函数可以接受不限个参数,位置可以不按 ...
- JAVA_SE基础——6.标识符&关键字
学会写helloworld之后, 我们就开始来认识标识符&关键字 一.标识符 标识符是指可被用来为类.变量或方法等命名的字符序列,换言之,标识符就是用户自定义的名称来标识类.变量或方法等.更 ...
- SpringCloud的应用发布(一)SpringCloud的样例工程
前言 这个综合例子创建了 6个微服务应用 一个服务注册中心 SvcReg(EurekaServer),生产中要考虑高可用 一个配置中心 CfgMgr + git目录存储配置(ConfigServer, ...
- bootstrap 一个简单的登陆页面
效果如图:用bootstrap 写的一个简单的登陆 一.修改样式 样式可以自己调整,例如换个背景色之类的,修改 background-color属性就可以 #from { background-col ...
- C#微信公众号——本地调试
测试微信,因为要与微信服务器进行交互,所以必须要是外网地址,实现本地调试首先需要解决的问题就是外网问题,这个我前面的文章有介绍,这里就不再详细介绍了,网址http://www.cnblogs.com/ ...
- Python学习之输入输出、数据类型
#coding=utf-8 # 输入 print'100+200=',100+200 # 输入 # name = raw_input('tell me your name:') # print'hel ...
- idea中,发现某个java语法在低版本中不支持时的解决办法
比如,在某个工程中,准备用java.util.Objects#equals语法,发现提示版本不支持. F4查看Module的配置,发现原来是1.6版本. 当我手动修改为1.8时,提示我:Module是 ...
- ActiveMQ学习系列(二)----生产者客户端(java)
上文主要简单地将activeMq搭建了起来,并且可以用web console去登录查看相关的后台功能. 本文将学习如何用java语言实现一个生产者客户端,主要参考了以下链接: http://activ ...
- Python入门之Python在Win10环境下的配置(图文教程)
请在Python官网下载Python2.7和Python3.6安装包,虽然最新的是3.6版本,但是建议两个包都安装,方便后期在IDE工具切换. Python官网:https://www.python. ...
- 1.0 添加WEB API项目并按注释生成文档(多项目结构)
1.新建ASP.NET 项目,模板选择如图 2.选择Web API,并选择不进行身份验证方式 成功后我们看到这个结果. 至于其它三种身份验证方式,不太适合我的使用.而且这种方式也可以在代码里去实现身份 ...