Django之ORM操作(聚合 分组、F Q)

Django之ORM操作(聚合 分组、F Q)

  

  聚合

  aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作.

    键的名称是聚合值的标识符,只是计算出来的聚合值.键的名称是按照字段和聚合函数的名称自动生成出来的.

  聚合函数的导入

from django.db.models import Max, Min, Sum, Avg, Count

  

  简单使用示例:

  查询所有书的平均价格.

1 from django.db.models import Avg, Sum, Max, Min, Count
2 
3 ret = models.Book.objects.all().aggregate(Avg("price"))
4 
5 >>> {'price__avg': 13.233333}  # price__avg 是自动成出来的,前边是聚合的字段,后边是聚合函数的名称.

  

   当需要为聚合值指定一个名称,可以向聚合子句提供它.

from django.db.models import Avg, Sum, Max, Min, Count

models.Book.objects.aggregate(average_price=Avg('price'))  # average_price 为自己指定的名称.
>>> {'average_price': 13.233333}

  当需要生成不止一个聚合时,可以向aggregate()子句中添加另一个参数.

  查询所有图书价格的平均值 最大值 最小值.

1 from django.db.models import Avg, Sum, Max, Min, Count
2 
3 models.Book.objects.all().aggregate(Avg("price"), Max("price"), Min("price"))  # 
4 
5 >>> {'price__avg': 13.233333, 'price__max': Decimal('19.90'), 'price__min': Decimal('9.90')}

   分组

  F

  Q

猜你喜欢

转载自www.cnblogs.com/ZN-225/p/9779664.html