美文网首页
aggregation

aggregation

作者: xncode | 来源:发表于2017-09-12 11:16 被阅读0次

aggregate

除了count,默认是使用该属性加方法来命名返回结果的key值,但可以指定

Book.objects.count()
# 200
Book.objects.all().aggregate(Avg('price'))  # Max
# {'price__avg': 34.45}
Book.objects.all().aggregate(price_avgnum=Avg('price'))  # 指定了返回结果的字段名称
# {'price_avgnum': 34.45}

price_diff=Max('price', output_filed=FloatField()) - Avg('price'))  # 可进行运算
   
Book.objects.aggregate(Avg('price'), Max('price'), Min('price'))
# {'price__avg': 34.35, 'price__max': Decimal('81.20'), 'price__min': Decimal('12.99')}

annotate

pubs = Publisher.objects.annotate(num_books=Count('book'))
# pubs -> list
# pubs[0].num_books

同时拿count多值出来可能会有问题,即使用的是join而不是子查询。可以使用:

Book.objects.annotate(Count('authors', distinct=True), Count('store', distinct=True))

相关文章

网友评论

      本文标题:aggregation

      本文链接:https://www.haomeiwen.com/subject/fexcsxtx.html