2011-09-29 108 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'))