2011-09-29 209 views
0

因此,我有一个查询集,返回金融机构的列表,也是我在每个机构的投资总金额。计算总计查询集

views.py

total_list = plan.investment_set.filter(maturity_date__gte= '%s-1-1' % current_year).values('financial_institution__abbr').annotate(Sum('maturity_amount')) 

我想现在要做的,就是找到一个总计为所有的钱。我的问题是,我如何计算总和以找到我所有投资的总和。

回答

1

我相信你正在寻找.aggregate()

total_list = plan.investment_set.filter(
    maturity_date__gte= '%s-1-1' % current_year 
).aggregate(Sum('maturity_amount')) 

这应该给你:

{'maturity_amount__sum': <total amount>} 
+0

是的,这是对的。问题是,你不能在原始聚合的同一个查询中完成 - 你需要一个获得小计,一个用于总计。 –

+0

@丹尼罗斯曼 - 是的,我认为这是正确的。尽管我认为,即使你可以链接现有的查询集,你仍然会进行额外的数据库调用 - 因此,这种差异会稍微简单一些,而不是更好的性能。 – nrabinowitz

0

对不起,这是创造一个麻烦。您计算的字段是maturity_amount命名值吗?如果是这样,你可以尝试这里面工作了你刚才的问题(Using Django to summarize Report):

grand_total = plan.investment_set.annotate(Sum('value'))