0
IDクエリの結果を月単位でグループ化し、各テーブルのヘッダーとして月名を付けたいとします。クエリーセットの結果をテンプレートで月別に表示する
私はそうのようなモデルがあります:私は、私は空のリストの束を作成し、移入ことができると思います
{% for tenant in expired_list %}
<table>
<tr>
<td>{{ tenant.first_name }}</td>
<td>{{ tenant.telephone }}</td>
<td>{{ tenant.contract_end }}</td>
</tr>
</table>
{% endfor %}
:
def expired_contracts(request):
now = datetime.datetime.now()
tenant_queryset = Tenant.objects.all()
expired_list = []
for x in range(0, 12):
date = now + relativedelta(months=x)
expired = tenant_queryset.filter(
contract_end__year=date.year,
contract_end__month=date.month
)
expired_list += expired
context = {"expired_list": expired_list}
return render(request, "expired_template.html", context)
テンプレート:そうのような
class Tenant(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
telephone = models.CharField(max_length=30)
email = models.CharField(max_length=30)
contract_end = models.DateField(blank=False)
def __str__(self):
return u'%s %s' % (self.first_name, self.last_name)
ビューそれらはループとif文を使っていますが、それは少ししか見えません。
他の方法でこれを行うことができますか?
ありがとうございます!
Iainヘルプありがとうございます。私はあなたの方法を試して、それは動作します。私は、regroupタグを使って別の方法も見つけました。将来の使用のためにitertoolsと一緒に遊びに行く – OrangeBubbles
@OrangeBubbles - 今後12ヶ月以内にすべてのテナントが契約期限切れとなるようにクエリを1つだけ調べる必要があります。このリストをgroupbyまたはregroupに渡して同じ結果を得ることができますが、クエリの1/12 –