使用django根据日期修改模板

时间:2018-06-10 14:57:49

标签: python django

我想根据日期修改模板上的选项。

我怀疑的代码看起来像这样:

FitSystemWindow=true

我认为我的问题是我试图将其写成一个视图 - 我不太确定如何在模板中编辑它而不是views.py

2 个答案:

答案 0 :(得分:2)

您可以使用属性方法将其添加到模型类中。

import datetime 
today = datetime.datetime.today()
class ModelClass(models.Model):
    # fields 
    @property
    def is_future_date(self):
        return self.event_date >= today
{% for campaign in filter.qs %}
     {% if campaign.is_future_date %}
          # <code> 
     {% endif %}
{% endfor %}

但是如果您有多个不同的date需要进行比较,或者您想知道它是过去的,现在的未来date,那么为每个模型编写属性方法 NOT最好的一个。因此,我建议使用标记过滤器,然后将其导入模板,而不是使用属性方法,这样您就可以在模板中的任何位置比较date

这是一个例子:

from django import template
register = template.Library()
import datetime

@register.filter
def is_future_date(date):
    return date >= datetime.datetime.today()

要在模板中使用它,请按照这样的方式调用

{% for campaign in filter.qs %}
     {% if campaign.event_date|is_future_date %}
          <code> 
     {% endif %}
{% endfor %}

模板中的另一个date

{% if another_instance.date|is_future_date %}
     # I am able to do it with whatever model
     # no need to create multiple property methods
{% endif %}

答案 1 :(得分:1)

我认为示例解决方案是创建模型property

class YOUMODEL():

    @property
    def is_today_or_after(self):
        return self.event_date > datetime.today()

然后在模板中使用:

{% for campaign in filter.qs %}
{% if campaign.is_today_or_after %}
<code> 
{% endif %} {% endfor %}