私はクラスベースのビューにかなり慣れていないので、これはおそらく明白ですが、ヒントはありがたいです。リストの各項目の「残り時間」を表示したい。つまり、10個のオブジェクトがある場合、それぞれが期限に達するまでの残りの日数、時間数、分数をテンプレートに表示する必要があります。これが私の試みです:
model.py
class Law(models.Model):
deadline = models.DateTimeField(_(u'The Deadline'),)
name = ..
more_stuff = ..
views.py
class LawList(ListView):
model = Law
context_object_name = 'law'
template_name = 'template.html'
template.html
{% for l in law %}
<h3>{{ l.deadline }} - {{l.name }} </h3>
{{l.more_stuff}}
{% endfor %}
ここまではすべて良いです。{{l.time-left}}
ただし、の代わりに使用したいと思い {{l.deadline}}
ます。ビューがこれを計算してテンプレートに渡す方法はありますか?
'LawList'ビューにを追加することを考えget_context_data
ましたが、リスト内のすべてのアイテムに対して追加する方法がわかりません。以下は、単一のアイテムで機能するものです。
# views.py, below the section above
def get_context_data(self, **kwargs):
context = super(LawList, self).get_context_data(**kwargs)
context['time_left'] = Law.objects.all()[0].deadline - timezone.now()
しかし、私は少し立ち往生しています。ありがとう!