我的 annotate(sum()) 函数有一个小问题。现在我想要它做的是在列表中显示给定计划中所有到期日的总数。对于第一个,它确实如此。下面的代码:
#get the invesments maturing this year
for p in plans:
cur_inv = Investment.objects.all().filter(plan = p).order_by('financial_institution').filter(maturity_date__year = current_year)
nxt_inv = Investment.objects.all().filter(plan = p).order_by('financial_institution').filter(maturity_date__year = next_yr)
thr_inv = Investment.objects.all().filter(plan = p).order_by('financial_institution').filter(maturity_date__year = thr_yr)
fr_inv = Investment.objects.all().filter(plan = p).order_by('financial_institution').filter(maturity_date__year = fr_yr)
fv_inv = Investment.objects.all().filter(plan = p).order_by('financial_institution').filter(maturity_date__year = fv_yr)
for inv in cur_inv:
total += inv.amount or 0
for inv in cur_inv:
total_m += inv.maturity_amount or 0
for inv in nxt_inv:
total2 += inv.amount or 0
for inv in nxt_inv:
total_m2 += inv.maturity_amount or 0
for inv in thr_inv:
total3 += inv.amount or 0
for inv in thr_inv:
total_m3 += inv.maturity_amount or 0
for inv in fr_inv:
total4 += inv.amount or 0
for inv in fr_inv:
total_m4 += inv.maturity_amount or 0
for inv in fv_inv:
total5 += inv.amount or 0
for inv in fv_inv:
total_m5 += inv.maturity_amount or 0
#Calculate the holding totals with each company
total_list = p.investment_set.filter(maturity_date__gte= '%s-1-1' % current_year).values('financial_institution__abbr').annotate(Sum('maturity_amount')).order_by('financial_institution__abbr')
gtotal = total_m + total_m2 + total_m3 + total_m4 + total_m5
plan_list.append({
'plan':p,
'investment': cur_inv,
'nxt_inv': nxt_inv,
'thr_inv': thr_inv,
'fr_inv': fr_inv,
'fv_inv': fv_inv,
'total_list': total_list,
'grand': gtotal,
})
我现在唯一的问题是,当它进入下一个计划时,它会继续添加到总计中,而不是回到 0。
我错过了什么吗?
任何帮助,将不胜感激。
谢谢