如果发布时间少于15分钟,我试图在django模板中使用不同的样式表。我在我的模型中创建了DateTimeField,它增加了15分钟的时间增量
blink = models.DateTimeField(default=datetime.datetime.now()+datetime.timedelta(minutes=15))
在view.py中,我定义了dayandtime
dayandtime = datetime.datetime.now()
在模板中,我有if
语句
{% if mi.blink > dayandtime %}
...
{% else %}
...
不幸的是,即使mi.blink
大于dayandtime
,也会转到其他地方。
我尝试使用此问题的回答[问题]:DateTime compare in django template
{% if mi.blink.date < dayandtime.date and mi.blink.time < dayandtime.time %}
但它仍无法正常工作。是因为时间增加了吗?
答案 0 :(得分:1)
您不能在模型字段定义中执行此操作。如果您在定义中执行timedelta
,那么只有在您的django项目初始化时才会调用它,然后在下次重新启动服务时重新初始化该值,与datetime.now()
相同。
但是,您可以在没有括号的情况下调用datetime.now
。这样您就可以将now()
函数作为函数回调传递,因此每次访问字段默认值时都会调用它:
blink = models.DateTimeField(default=datetime.datetime.now)
因此,如果您想添加15分钟,只需创建另一个功能:
def get_time():
return datetime.datetime.now() + datetime.timedelta(minutes=15)
# your field would accept function callback
blink = models.DateTimeField(default=get_time)