簡體   English   中英

Django-匯總和注釋簡單操作

[英]Django - aggregate and annotate for simple operations

我在文檔中看到聚合和注釋功能可用於在查詢中創建新列,因此,如果我編寫類似以下內容:

my_object = ...objects.filter(something).annotate(extra_column=Avg(value))

內部查詢將提供一個額外的列

, AVG(value) AS "extra_column" ...

現在,在我看來,它只能用於count,avg,max和min之類的功能...我可以做一些簡單的+/-特定數字嗎?

我正在嘗試.annotate(extra_column=another_column+1).annotate(extra_column='another_column'+1)但是它不起作用。

我究竟做錯了什么? 很抱歉這個愚蠢的問題。

您將使用F()表達式進行算術運算。 F()查詢表達式的一部分。 從文檔中:

Django支持使用Python常量,變量甚至其他表達式對查詢表達式進行加,減,乘,除,模算術以及冪運算符。

一個代碼示例是:

from django.db.models import F

my_object = Model.objects.annotate(extra_column=F('another_column') + 1)
my_object = Model.objects.annotate(extra_column=F('another_column') * F('yet_another_column'))

聚合函數確實返回可以通過加,減等操作的整數。

以下示例適用於Django 1.11.6

from django.db.models import Count
employees = Employee.objects.annotate(managers=Count('manager') + 10) # every employee has only a single manager.
print employees[0].managers # prints out 11 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM