django第10天(聚合查询,常用字段)
django第10天
聚合查询
聚合函数的使用场景
单独使用:不分组,只查聚合结果
分组使用:按字段分组,可查分组字段与聚合结果
导入聚合函数
from django.db.models import Avg,Max,Min,Count,Sum
单独聚合查询:aggregate
语法:
aggregate(别名 = 聚合函数('字段'))
规则:
1.QuerySet对象的方法
2.可以同时对多个字段进行聚合处理aggregate(
别名1=聚合函数1('字段1'),...,别名n=聚合函数n('字段n'))
3.返回值为字典
from django.db.models import Avg,Sum,Max,Min,Count
dic = Book.objects.all().aggregate(high_price = Max('price'),low_price = Min('price'),avg_price = Avg('price'))
print(dic.get('high_price'))
print(dic.get('low_price'))
print(dic.get('avg_price'))
分组聚合查询:annotate
语法:
values('分组字段').annotate(别名=聚合函数('字段')).filter(聚合字段别名条件).values('取分组字段','取聚合字段别名')
规则:
1.values(...).annotate(...)为分组组合,values控制分组字段,annotate控制聚合字段
2.values可按多个字段分组
3.可以同时对多个字段进行聚合处理annotate(别名1=聚合函数1('字段1'),...,别名n = 聚合函数n('字段n'))
4.分组后的filter代表having判断,只对聚合字段进行条件判断,可以省略(非聚合字段进行条件判断代表where判断)
5.取字段值values(...)省略默认取所有分组字段与聚合字段,也可以自主取个别分组字段及聚合字段,如果字段中有分组字段与聚合字段外的字段,会将该字段当做分组字段,影响查询结果
字段
常用共有字段属性
1.null:默认为False,True表示字段可为null
2.blank:默认为False,True表示字段可为空
3.choice:可选的,限制了该选项的字段值必须是所指定的choice中的一个:
sex = models.SmallIntegerField(choices =((1,'男'),(2,'女')))
obj.get_sex_display()
4.db_column:自定义字段名
5.db_index:如果为True的话,设置索引
6.default:字段默认值
7.editable:默认为True,若为False,则不会在/admin/界面显示
8.primary_key:若设置为True,则表示将该字段设置为主键,一般情况下django默认会设置一个自增长的id主键
9.unique:若设置为True,该字段值不可重复
常用字段
'''
1. AutoField():默认自增主键(primary_key=True),django会默认建立id字段主键
2. BooleanField():布尔字段,对应数据库tinyint类型
3. CharField():字符类型
-- 字段属性max_length=64,数据长度,必须明确
4. DateField():年月日时间类型
-- 字段属性auto_now=True,数据被更新就会更新时间
-- 字段属性auto_now_add=True,数据第一次参数时产生
5. DateTimeField():年月日小时分钟秒时间类型
-- 字段属性auto_now=True,数据被更新就会更新时间
-- 字段属性auto_now_add=True,数据第一次参数时产生
6. DecimalField():混合精度的小数类型
-- 字段属性max_digits=3,限定数字的最大位数(包含小数位)
-- 字段属性decimal_places=2,限制小数的最大位数
7. IntegerField():整型
'''
不常用字段
'''
1. BigAutoField():大整型自增
2. BigIntegerField():长整型
3. EmailField():邮箱字段,拥有/admin/验证
4. FloatField():浮点型小数
5. SmallIntegerField():小整型
6. TextField():大文本类型
7. FileField():文件字段
'''
关系字段
'''
1. ForeignKey():外键字段
-- 字段属性to关联模型类
-- 字段属性to_field关联字段
-- 字段属性on_delete (外键关联数据被删除时的操作)
-- models.CASCADE 级联删除
-- modles.PROTECT 抛出异常
-- models.SET_NULL 设置空值
-- models.SET_DEFAULT 设置默认值
-- models.SET(value)自定义值
-- 字段属性related_name
-- 字段属性db_constraint=False取消关联关系,但还可以使用连表查询
my_publish = Foreign_keyFiled()
2、OneToOneField():一对一外键字段
-- 字段同外键
3、ManyToManyField():多对多关系字段
-- 字段属性to关联模型类
-- 字段属性through关联关系类
-- 字段属性through_fields关联关系表中(本身类名小写字段, 关联表类名小写字段)
'''
django创建外键的优点:
1.建立连接后,封装了连表的方法,便于查询
2.保护数据,被依赖表的数据不存在时,无法创建依赖表的对应数据
缺点:
1.插入数据麻烦
2.当表多,关系复杂时会形成环状,删除数据会变的困难
为了使用django的连表查询和更方便的插入数据
取消关联关系,但可以使用连表查询
db_constraint = False
#一对一外键字段
OneToOneField():
django第10天(聚合查询,常用字段)的更多相关文章
- ORM中聚合函数、分组查询、Django开启事务、ORM中常用字段及参数、数据库查询优化
聚合函数 名称 作用 Max() 最大值 Min() 最小值 Sum() 求和 Count() 计数 Avg() 平均值 关键字: aggregate 聚合查询通常都是配合分组一起使用的 关于数据库的 ...
- Django聚合查询 orm字段及属性
目录 一 聚合查询 1. 级联 级联删除 级联更新 2. 聚合函数 使用 aggregate 使用场景 3. 分组查询 语法 使用 annotate 代码 4. F与Q查询 F查询 Q查询 二 ORM ...
- 1128 聚合查询 orm字段及属性
目录 一 聚合查询 1. 级联 级联删除 级联更新 2. 聚合函数 使用 aggregate 使用场景 3. 分组查询 语法 使用 annotate 代码 4. F与Q查询 F查询 Q查询 二 ORM ...
- Django 学习 之ORM聚合查询分组查询与F查询与Q查询
一.聚合查询和分组查询 1.聚合查询aggregate 关于数据表的数据请见上一篇:Django 学习 之ORM多表操作(点我) aggregate(*args, **kwargs),只对一个组进行聚 ...
- ORM常用字段及查询
目录 ORM常用字段及参数 创建表 ORM常用字段 ORM字段参数 ORM表关系创建 ForeignKey OneToOneField ManyToManyField 多对多三种创建方式 单表查询 q ...
- 动态查询:getBy字段名
http://www.php.cn/php/php-getBy.html 根据字段名动态查询:getBy字段名( ) 该方法很有意思,手册的说得很简略,我们根据源码来好好说道说道~~ 1. 功能:根据 ...
- Django聚合分组查询、常用字段
首先回顾sql中聚合和分组的概念: 如果没有分组,会把整张表作为一个大组,查询字段必须是聚合结果:如果有分组,分组之后,必须要使用聚合的结果作为having的条件. 聚合查询 聚合:aggregate ...
- Django——7 常用的查询 常用的模型字段类型 Field的常用参数 表关系的实现
Django 常用的查询 常用的查询方法 常用的查询条件 常用字段映射关系 Field常用参数 表关系的实现 查用的查询方法 这是需要用到的数据 from django.http import Htt ...
- Django框架之第六篇(模型层)--单表查询和必知必会13条、单表查询之双下划线、Django ORM常用字段和参数、关系字段
单表查询 补充一个知识点:在models.py建表是 create_time = models.DateField() 关键字参数: 1.auto_now:每次操作数据,都会自动刷新当前操作的时间 2 ...
随机推荐
- 蓝牙硬件交互数据传输Demo
#import "ViewController.h" #import <CoreBluetooth/CoreBluetooth.h> @interface ViewCo ...
- POP页面暂时不销毁
摘要:我们经常使用的QQ空间,当我们短时间内两次进入页面的时候,页面是没有重新创建的,不光是缓存的数据,是整个页面都没有变.我们在开发中可能也会有这样的需求.开始的时候,想的思路是这样的:用定时器,将 ...
- [洛谷P2186] 小Z的栈函数
题目链接: 传送门 题目分析: 大模拟,先得存操作,然后再处理每个数-- 有一个小优化,在处理操作的时候顺便判一下最后栈里是不是有且仅有一个数,但A完了才想起来,所以就算了-- 总之就是个模拟题--没 ...
- 24 使用Maven 或 Gradle构建groovy
1 使用Maven 或 Gradle构建groovy 1.1 使用maven构建groovy pom.xml file. <dependencies> ... oth ...
- 110 Balanced Binary Tree 平衡二叉树
给定一个二叉树,确定它是高度平衡的.对于这个问题,一棵高度平衡二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过 1.案例 1:给出二叉树 [3,9,20,null,null,15,7] ...
- 删除cookie时遇到的坑
曾经有个“导出中”的需求,我用iframe实现下载对话框和cookie轮询验证token去解决的,但是昨天又发现了一个新问题: 因为前台需要提示导出失败的详细信息,这个信息我是在token返回0的时候 ...
- Linux--NiaoGe-Service-06
Linux网络排错 思路: 硬件问题: 首先排除硬件故障,包括网线.Hub.Switch.Router.网卡.设备配置规则等等. 软件问题: 1.网卡的IP/Netmask设置错误 IP.Netmas ...
- Unity小知识记录
//判断运行的平台 Application.platform == RuntimePlatform.Android EditorPrefs 编辑器储存数据 [AddComponentMenu(&quo ...
- ObjextARX-VS2005-字符串转换
1.使用string必须添加头文件 #include"string"using namespace std; 2.使用CString必须添加头文件(在非MFC工程中) #inclu ...
- Struts2标签<s:checkboxlist>回显问题
Struts2 checkboxlist回显问题中,说明两种方式,第一种方式很普遍,第二种则是个人根据现有资源加上尝试得来的成果,第二种主要是为个人笔记(其中相关知识点不一一介绍). 一.普通方法: ...