聚合函数的使用

常用的聚合函数是FQ,他们主要作用:

  • 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')
    

results matching ""

    No results matching ""