Python Django-用于简单操作的聚合和注释

Python Django-用于简单操作的聚合和注释,python,django,Python,Django,我在文档中看到聚合和注释函数可用于在查询中创建一个新列,因此如果我编写如下内容: my_object = ...objects.filter(something).annotate(extra_column=Avg(value)) 内部查询将提供一个额外的列 , AVG(value) AS "extra_column" ... 现在,在我看来,它只能用于将功能,如计数,平均值,最大值和最小值。。。我能做一些简单的事吗 我正在尝试.annotate(extra\u column=另一列+1)或

我在文档中看到聚合和注释函数可用于在查询中创建一个新列,因此如果我编写如下内容:

my_object = ...objects.filter(something).annotate(extra_column=Avg(value))
内部查询将提供一个额外的列

, AVG(value) AS "extra_column" ...
现在,在我看来,它只能用于将功能,如计数,平均值,最大值和最小值。。。我能做一些简单的事吗

我正在尝试
.annotate(extra\u column=另一列+1)
.annotate(extra\u column='另一列'+1)
,但它不起作用


我做错了什么?对不起,这个愚蠢的问题。

聚合函数确实返回整数,可以通过加法、减法等操作

以下示例适用于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 
你会用表达式来做算术
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'))

到底是什么不起作用?您遇到了什么错误?您的问题解决了吗?你能结束这个问题吗?是的,但是。。。我什么都不用数。为什么急着关门?哈哈,我周末没工作了