我正在使用 Django 1.5.8
我想在模板中过滤Datefield
类型数据,如下面的代码。
timesince
格式表达最近的文章date
格式表达some_template.html 的
{% for article in articles %}
{# recent articles #}
{% if article.created >= (now - 7 days) %}
{{ article.created|timesince }}
{# old articles more than one week past #}
{% else %}
{{ article.created|date:"m d" }}
{% endif %}
{% endfor %}
django自己的模板标签是否有处理{% if article.created >= (now - 7 days) %}
的解决方案?
或者我是否必须制作新的自定义过滤器?
答案 0 :(得分:2)
虽然我确信可以使用自定义模板标记执行此操作,但我认为您会发现在模型代码中实现此测试要容易得多。例如:
from datetime import date, timedelta
class Article(models.Model):
[...]
def is_recent(self):
return self.created >= date.today() - timedelta(days=7)
然后你的模板可以是:
{% for article in articles %}
{% if article.is_recent %}
{{ article.created|timesince }}
{% else %}
{{ article.created|date:"m d" }}
{% endif %}
{% endfor %}