我有一个非常有想象力地称为“foreman start -f Procfile.dev
”的模型,其中包含一个字段“model
”;用户可以在此处以MM / DD / YYYY格式输入日期。在我的模板中,当所述模型的datefinish
(日期)等于当天时,我需要显示一些文本。
HTML:
datefinish
如何实现这一目标? 我正在使用Django 1.10 ...谢谢!
答案 0 :(得分:2)
根据Daniel的建议选择模型选项,我更喜欢这样,只要你加载那个模型就可以随时使用
模式:
@property
def is_today(self):
return self.datefinish == datetime.today().date()
这假设'datefinish'是DateField,而不是DateTimeField,对于DateTimeField,你会做self.datefinish.date() == ...
你还可以看到它是否在一个范围内,即
return self.start_date <= datetime.today().date() <= self.end_date
如果模型中有两个日期。
或创建模板标签,如:
@register.filter
def is_today(dt):
if isinstance(dt, datetime):
return dt.date() == datetime.today().date():
if isinstance(dt, date):
return dt == datetime.today().date():
然后在模板中你可以做
{% if model.datetime_field|is_today %}
过滤器可以处理DateField和DateTimeField
答案 1 :(得分:0)
不要在模板中执行此操作。在模型上编写一个方法 - 例如调用finishes_today
- 执行此检查并返回一个布尔值,并在模板中调用它。
答案 2 :(得分:0)
我会避免使用逻辑重载模板并将此检查放入视图中(或者作为Daniel建议的模型属性):
is_today = model.datefinish == datetime.today()
return render_to_response('template.html', {'is_today': is_today})
然后,在您的模板中,只需检查上下文中传递的变量:
{% if is_today %}
<h5>It ends today</h5>
{% else %}
<h5>It does not end today</h5>
{% endif %}
还有this option,但它确实看起来有点过于复杂。