在django模板

时间:2015-12-07 06:11:28

标签: python django datetime

我需要将对象的DateTime字段值中的年份与模板中的当前年份进行比较。如果年份不同,则显示对象的年份。这就是我这样做的方式:

{% now "Y" as current_year %}
    <ul>
        {% for news in news %}
            {% if news.date.year != current_year %}
                <b>{{ news.date.year }}</b>
                <li>{{ news }}</li>
            {% else %}
                <li>{{ news }}</li>
            {% endif %}
        {% endfor %}
    </ul>

它总是如此,并向我展示了这一年。 但是,如果我使用2015而不是current_year,它可以正常工作。

基本上我需要这个:

  • 第一条新闻!
  • 第二条消息!

    2014

  • 第三条消息!

    2013

  • 第四条消息!

1 个答案:

答案 0 :(得分:1)

我不认为可以按照您尝试的方式完成。但是你可以为你的模型编写一个检查年份是否相同的方法。

from django.utils import timezone

class MyModel(...):
    # fields ...
    date = models.DateField(...)

    def was_published_this_year(self):
        now = timezone.now()
        if now.year ==  self.date.year:
            return True
        else:
            return False

现在,在你的模板中这样做:

{% if not news.was_published_this_year %}
    Do something.
{% endif %}