美文网首页
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