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 ...
随机推荐
- ES5(基本包装类型)字符串的方法
看一下字符串有哪些常用的方法: 1.concat();将多个文本组合起来,返回新的字符串,就是拼接字符串. 查找位置 2.indexOf();返回要匹配的字符在字符串第一次出现的索引,参数就是匹配的字 ...
- C# 基础之类与结构体的区别
1.语法上的区别是: 定义类使用关键字class,定义结构体用关键字struct 2.结构体中不可对声明字段进行初始化,但类可以 3. 类:如果没有为类显示的定义一个构造函数,c#编译器会自动生成一个 ...
- ctypes to load library in c/c++
cdll.LoadLibrary(...) restype (default is c_int) argtypes (what's the default? c_int?) customized da ...
- 关于如何在其他包中写controller和简单介绍@SpringBootApplication
本文参考博客:https://blog.csdn.net/u013473691/article/details/52353923 关于@Configuration和@Bean参考博客:https:// ...
- 一个普通Java程序包含哪些线程??
package com.java.threads; import java.lang.management.ManagementFactory; import java.lang.management ...
- 【实用】Html5实现文件异步上传
1 简介 开发文件上传功能从来不是一件愉快的事,异步上传更是如此,使用过iframe和Flash的上传方案,也都感觉十分的别扭.本文简要简绍利用Html5的FormData实现文件的异步上传,还可以实 ...
- 学习cocos2dx3.1.0
static_cast<type-id>expression 该运算符把expression转换为type-id类型 Lambda表达式 CallFunc::create([=](){} ...
- IOS typedef 函数指针的用法
代码简化, 促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字. 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换. 用 ...
- 面向阿里云专家的 Azure 云服务介绍
本文是面向阿里云专家的 Azure 云服务介绍,参考本文可以帮助大家“按图索骥”在 Azure 的平台上找到能满足自己需求的服务. 在公有云计算蓬勃发展的同时,中国也出现了越来越多的本土公有云平台.针 ...
- COGS 2566. [51nod 1129] 字符串最大值
★★★ 输入文件:string_maxval.in 输出文件:string_maxval.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 一个字符串的前缀是指包 ...