當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Django QuerySet.annotate用法及代碼示例


本文介紹 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 討論,請參閱關於聚合的主題指南。

相關用法


注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.db.models.query.QuerySet.annotate。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。