我的模板中有以下内容:
{% for showtime in showtimes %}
{% ifchanged showtime.start.day %}
<h3>{{ showtime.start|date:"M d" }}</h3>
{% endifchanged %}
showtime.start是一个时区感知的DateTimeField。问题是 showtime.start.day 以UTC格式返回日期,而 showtime.start | date:“M d”在上下文时区中打印日期。
我尝试了以下内容:
{% ifchanged showtime.start|date:"M d" %}
失败,因为ifchanged无法处理过滤器的参数(即使在1.5中)。我尝试过玩时区和当地时间,例如。
{% load tz %}
{% timezone TIME_ZONE %}
{% for showtime in showtimes %}
{% ifchanged showtime.start.day %}
<h3>{{ showtime.start|date:"M d" }}</h3>
{% endifchanged %}
{% endtimezone %}
正如所料,那些不起作用。有没有办法在日期时间的时间版本上进行ifchanged工作,还是需要自定义过滤器?
答案 0 :(得分:0)
不幸的是,我找到的唯一方法是使用自定义模板标记:
{% ifchanged showtime.start|localtime|year_month_day %}
所以我使用localtime过滤日期,然后自定义模板标签在适当的时区返回年,月和日,所以ifchanged可以工作。
@register.filter()
def year_month_day(value):
return "%d-%d-%d" % (value.year, value.month, value.day)