Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django中的自定义聚合注释_Python_Django_Django Models_Django Views_Django Queryset - Fatal编程技术网

Python Django中的自定义聚合注释

Python Django中的自定义聚合注释,python,django,django-models,django-views,django-queryset,Python,Django,Django Models,Django Views,Django Queryset,我有很多小组,每个小组都有一个修订版,每个修订版都有几个月的时间 我想输出所有带有注释的组对象 对于每个组,只应选择最新版本,然后将所有月份相加 我不确定能否在Django完成。我试过类似的东西 Group.objects.annotate( month_sum=Revision.objects.filter(date__lte=my_date).latest('date').aggregate(Sum('months__amount')) ) 并希望得到一个包含所有组的查询集,每个组

我有很多小组,每个小组都有一个修订版,每个修订版都有几个月的时间

我想输出所有带有注释的组对象

对于每个组,只应选择最新版本,然后将所有月份相加

我不确定能否在Django完成。我试过类似的东西

Group.objects.annotate(
    month_sum=Revision.objects.filter(date__lte=my_date).latest('date').aggregate(Sum('months__amount'))
)
并希望得到一个包含所有组的查询集,每个组都有一个sum
month\u sum

您能试试这个吗:

qs = Group.objects.filter(revision__date__lte=my_date).annotate(month_sum=Sum('months__amount'))
通过在shell中打印生成的DB查询,您可以调试并尝试取消理解如何进行正确的查询:

print str(qs.query)
编辑:

我认为,用旧版本显示分组可能会对您有所帮助

如果

from django.db.models import Q
from aggregate_if import Sum

revision = Revision.objects.filter(revision__date__lte=my_date).latest()
qs = Group.objects.all().annotate(month_sum=Sum('months__amount', only=Q(revision=revision)))

太棒了。问题是我只想要最新的版本,而不是所有的版本,所以我需要做一些类似于
filter(revision\u date\u lte=my\u date)。latest()
我想我很快就能让它工作了。这似乎对一个群体有效。我猜这是因为每个小组都有一些估计,每个估计都有一些修正。在您的示例中,它将过滤每个组中的相同版本。我真的不知道如何解决它,但我感谢你的帮助<代码>django聚合如果应在django中实现:-D