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 ...
随机推荐
- 213. 打家劫舍 II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在 ...
- Glide加载图片的事例
//获取图片的url String url = resultsEntity.getUrl(); //判断获取的图片是否存在 if (resultsEntity.getItemHeight() > ...
- Spark无法创建新线程
Spark提交程序报错,无法创建新的线程 原因是因为这台公用机器上跑的进程太多了,需要修改Linux参数,允许用户最大进程数 查看允许用户最大进程数配置 ulimit -a 修改允许用户最大进程数配置 ...
- mysql设置自增长列的当前值
-- 查看表中自增长列的当前值 SELECT Auto_increment FROM information_schema.`TABLES` WHERE Table_Schema='rhr' AND ...
- AJPFX关于Collection接口的总结
###15Collection-List-ArrayList/LinkedList/* * Collection接口中的方法* A:添加功能* boolean add ...
- jQuery deferred应用之ajax详细源码分析(二)
在上一节中,我只贴出了$.Deferred的源码分析,并没用讲解怎么使用它,现在我们先看看$.ajax是如何使用它,让我们进行异步任务的处理. 如果没看上节的代码,请先稍微了解一下jQuery Def ...
- pingall脚本
p i n g a l l:一个按照/ e t c / h o s t s文件中的条目逐一p i n g所有主机的脚本 它能够按照/ e t c / h o s t s文件中的条目逐一p i n g所 ...
- 解决更新到os x10.11后openssl头文件无法找到的问题
os x从10.10更新到10.11后,原有代码编译报错,#include <openssl/ssl.h>等头文件无法找到: "openssl/ssl.h: No such fi ...
- 【春节版】年度精品 XP,32/64位Win7,32/64位Win8,32/64位Win10系统
本系统是10月5日最新完整版本的Windows10 安装版镜像,win10正式版,更新了重要补丁,提升应用加载速度,微软和百度今天宣布达成合作,百度成为win10 Edge浏览器中国默认主页和搜索引擎 ...
- COGS 615. 韩国明星
[问题描述] 在LazyCat同学的影响下,Roby同学开始听韩国的音乐,并且越来越喜欢H.o.T,尤其喜欢安七炫和Tony,可是,爱学习爱思考的Roby同学想,如果以后喜欢的韩星越来越多怎么办呢?R ...