一尘不染

如何在Django模板中比较日期

django

我想将日期与Django中的当前日期进行比较,最好是在模板中进行比较,但是也可以在渲染模板之前进行比较。如果日期已经过去,我想说“过去”,而如果将来,我想说出日期。

我希望有人可以做这样的事情:

{% if listing.date <= now %} 
     In the past 
{% else %} 
     {{ listing.date|date:"d M Y" }} 
{% endif %}

现在是今天,但是这不起作用。我在Django文档中找不到有关此的任何内容。任何人都可以给点建议吗?


阅读 761

收藏
2020-03-27

共1个答案

一尘不染

比较视图中的日期,然后将类似in_the_past(boolean)的值传递给extra_context。

或者最好将其作为属性添加到模型中。

from datetime import date

@property
def is_past_due(self):
    return date.today() > self.date

然后在模板中:

{% if listing.is_past_due %}
    In the past
{% else %}
    {{ listing.date|date:"d M Y" }}
{% endif %}

基本上,模板不是IMO进行日期比较的地方。

2020-03-27