聚合函数的使用
常用的聚合函数是F
、Q
,他们主要作用:
- 1、
F
:更新数据库字段 - 2、
Q
: 构造复杂条件的查询
一、聚合函数的使用
1、导包
from django.db.models import Avg, F, Q, Min, Sum, Max, Count
2、
aggregate(*args, **kwargs)
函数的使用 通过对QuerySet
进行计算,返回一个聚合值的字典,aggregate()
中每一个参数都指定一个包含在字典中的返回值.3、计算平均值与总共的
def test(request): re1 = StudentModel.objects.all().aggregate(Sum('age')) re2 = StudentModel.objects.all().aggregate(Avg('age')) print(re1) print(re2) return HttpResponse('ok')
4、
annotate(*args, **kwargs)
通过对计算查询结果中每一个对象所关联的对象集合,从而计算总值(平均值)
就是根据你的条件集合分组,分组后计算总值或者平均值
5、计算平均值与总值
def test(request): # 根据age和mobile分组,然后计算总值 re1 = StudentModel.objects.all().values('age', 'mobile').annotate(Sum('age')) print(re1) return HttpResponse('ok')
6、
F()
的使用F()
函数可以包装原来的字段,然后进行计算操作def test(request): re1 = StudentModel.objects.all().update(age=F('age') + 10) print(re1) return HttpResponse('ok')
7、
Q()
函数的使用Q()
表示或的意思(常用于用户可以手机号码、邮箱、用户名登录)def test(request): re1 = StudentModel.objects.filter(Q(age=35) | Q(age=29)).values('age', 'name') print(re1) return HttpResponse('ok')
8、
~Q()
表示非def test(request): re1 = StudentModel.objects.filter(Q(age=35) | ~Q(age=29)).values('age', 'name') print(re1) return HttpResponse('ok')