Django:在模板中过滤Datefield

时间:2015-01-26 19:31:03

标签: django django-templates

我正在使用 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) %}的解决方案?

或者我是否必须制作新的自定义过滤器?

1 个答案:

答案 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 %}