聚合函数的使用
常用的聚合函数是F、Q,他们主要作用:
- 1、
F:更新数据库字段 - 2、
Q: 构造复杂条件的查询
一、聚合函数的使用
1、导包
from django.db.models import Avg, F, Q, Min, Sum, Max, Count2、
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')