Django ListView:在所有项目中取时差



我对基于类的视图相当陌生,所以这可能是显而易见的,但任何提示都值得赞赏。我想为列表中的每个项目显示"剩余时间"。 也就是说,如果我有 10 个对象,每个对象都应该在模板中显示截止日期到来之前剩余的天数、小时数、mn。 这是我的尝试:

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'

模板.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() 

但我有点卡住了。谢谢!

看看timeuntil模板标签

相关内容

  • 没有找到相关文章

最新更新