Django 数据聚合函数 annotate

https://www.cnblogs.com/yanzi-meng/p/7779336.html

转载于:https://www.cnblogs.com/1a2a/p/11227351.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 中,聚合查询是指对模型数据进行统计、分组、排序等操作的查询。而 annotate() 是聚合查询中的一个常用方法,它可以在查询结果中添加一个聚合函数的值,并将该值作为一个新的属性添加到查询结果的每个对象中。 annotate() 方法的参数可以是一个聚合函数,也可以是一个表达式。聚合函数包括:Count、Avg、Sum、Max、Min 等,而表达式则是由模型中的字段和操作符组成的一个字符串。 以下是一些例子: ```python from django.db.models import Count from .models import Book, Author # 统计每个作者的书籍数量 authors = Author.objects.annotate(num_books=Count('book')) # 统计每个作者的平均书籍价格 authors = Author.objects.annotate(avg_price=Avg('book__price')) # 统计每个作者的最高书籍价格 authors = Author.objects.annotate(max_price=Max('book__price')) # 统计每个作者的书籍总价值 authors = Author.objects.annotate(total_price=Sum('book__price')) # 统计每个作者的书籍数量,并将结果按照数量从多到少排序 authors = Author.objects.annotate(num_books=Count('book')).order_by('-num_books') ``` 在上面的例子中,annotate() 方法的参数都是一个字符串,它们表示不同的聚合函数或表达式。其中,`'book'` 表示一个外键,它指向 Book 模型;`'book__price'` 表示一个跨表查询,它找到与 Book 关联的 Price 字段。 所以在使用 annotate() 的时候,需要根据具体的需求来设置参数,将其设置为合适的聚合函数或表达式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值