我想根据日期修改模板上的选项。
我怀疑的代码看起来像这样:
FitSystemWindow=true
我认为我的问题是我试图将其写成一个视图 - 我不太确定如何在模板中编辑它而不是views.py
答案 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 %}