本文介绍 django.db.models.query.QuerySet.annotate
的用法。
声明
annotate(*args, **kwargs)
使用提供的查询表达式列表注释 QuerySet
中的每个对象。表达式可以是一个简单的值、对模型(或任何相关模型)上字段的引用,或者是对与模型中的对象相关的对象进行计算的聚合表达式(平均值、总和等)。 QuerySet
。
annotate()
的每个参数都是一个注释,将添加到返回的 QuerySet
中的每个对象。
Django 提供的聚合函数在下面的Aggregation Functions 中说明。
使用关键字参数指定的注释将使用关键字作为注释的别名。匿名参数将根据聚合函数的名称和正在聚合的模型字段为它们生成一个别名。只有引用单个字段的聚合表达式可以是匿名参数。其他一切都必须是关键字参数。
例如,如果您正在处理一个博客列表,您可能想要确定每个博客中有多少条目:
>>> from django.db.models import Count
>>> q = Blog.objects.annotate(Count('entry'))
# The name of the first blog
>>> q[0].name
'Blogasaurus'
# The number of entries on the first blog
>>> q[0].entry__count
42
Blog
模型本身并没有定义entry__count
属性,但是通过使用关键字参数来指定聚合函数,可以控制注解的名称:
>>> q = Blog.objects.annotate(number_of_entries=Count('entry'))
# The number of entries on the first blog, using the name provided
>>> q[0].number_of_entries
42
有关聚合的in-depth 讨论,请参阅关于聚合的主题指南。
相关用法
- Python Django QuerySet.aggregate用法及代码示例
- Python Django QuerySet.alias用法及代码示例
- Python Django QuerySet.select_related用法及代码示例
- Python Django QuerySet.union用法及代码示例
- Python Django QuerySet.latest用法及代码示例
- Python Django QuerySet.values用法及代码示例
- Python Django QuerySet.intersection用法及代码示例
- Python Django QuerySet.get用法及代码示例
- Python Django QuerySet.none用法及代码示例
- Python Django QuerySet.exclude用法及代码示例
- Python Django QuerySet.get_or_create用法及代码示例
- Python Django QuerySet.update_or_create用法及代码示例
- Python Django QuerySet.prefetch_related用法及代码示例
- Python Django QuerySet.first用法及代码示例
- Python Django QuerySet.dates用法及代码示例
- Python Django QuerySet.values_list用法及代码示例
- Python Django QuerySet.select_for_update用法及代码示例
- Python Django QuerySet.order_by用法及代码示例
- Python Django QuerySet.bulk_update用法及代码示例
- Python Django QuerySet.in_bulk用法及代码示例
- Python Django QuerySet.defer用法及代码示例
- Python Django QuerySet.reverse用法及代码示例
- Python Django QuerySet.count用法及代码示例
- Python Django QuerySet.exists用法及代码示例
- Python Django QuerySet.explain用法及代码示例
注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.db.models.query.QuerySet.annotate。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。