【问题标题】:comparing two DateTime fields in django template比较 django 模板中的两个 DateTime 字段
【发布时间】:2016-02-24 05:52:56
【问题描述】:

如果自发布以来的时间少于 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,它也会转到 else。

我尝试使用这个问题的答案 [问题]:DateTime compare in django template

{% if mi.blink.date < dayandtime.date and mi.blink.time < dayandtime.time %}

但它仍然无法正常工作。是因为添加了timedelta吗?

【问题讨论】:

    标签: python django templates if-statement view


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 2017-12-16
      • 1970-01-01
      • 2017-12-17
      • 2012-06-06
      相关资源
      最近更新 更多