Django で課金システムを作成していますが、奇妙な問題が発生しています。私の views.py で、支払いが行われた一意の月を引き出すクエリを作成します。次に、この月のリストを反復処理して、毎月支払われた金額を計算します。
クエリは機能し、計算された数値は正しいのですが、テンプレートで表示すると 1 か月ずれています。そのため、クエリを実行すると 6 月の合計が得られますが、テンプレートでは月が 5 月として表示されてしまいます。これを機能させるための簡単なハックを作成するのは簡単ですが、なぜこれが起こっているのかを理解したいと思います.
以下のコード:
# views.py
def reports_index(request):
payment_months = Payment.objects.dates('date', 'month')
payments_by_month = []
for p in payment_months:
monthly_payment = Payment.objects.filter(date__year=p.year, date__month=p.month).aggregate(Sum('amount'))['amount__sum']
yearly_payment = monthly_payment * 12
payments_by_month.append([p, monthly_payment, yearly_payment])
return render_to_response('reports.html', locals(), context_instance=RequestContext(request))
# reports.html
{% load humanize %}
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic resize">
<thead>
<tr>
<th>Month</th>
<th>Monthly Payments Recieved</th>
<th>Yearly Payment Estimate</th>
</tr>
</thead>
<tbody>
{% for p in payments_by_month %}
<tr class="gradeC">
<td>{{ p.0|date:"M Y" }}</td>
<td style="text-align:center;">${{ p.1|intcomma }}</td>
<td style="text-align:center;">${{ p.2|intcomma }}</td>
</tr>
{% endfor %}
</tbody>
</table>
誰かが前にこのようなものを見たことがありますか?