如何比较django模板中的datetime

问题描述:

背景:如何比较django模板中的datetime

我想显示的时间和日期只有1个星期。之后,我想只显示日期。

我想做这样的事情。 (这不工作)

{% if greenboard.datetime|timesince >= "1 week" %} 
    {{greenboard.datetime.date}}<br /> 
{% else %} 
    {{greenboard.datetime|timesince}} ago 
{% endif %} 

编辑: 嗨,即使再与编辑我得到的是与所有的parameters..i.e,日期时间一起的时间。模板标签应该是什么?就像现在使用这种

{{ greenboard.datetime|timesince_threshold:2 }}

这使得它张贴,并使用

{{ greenboard.datetime|timesince }} 这给没有试过确切时间。几周和几天。仍然无法弄清楚。

timesince是一个简单的包装django.utils.timesince功能。您的问题,最简单的解决方法是编写自定义过滤器:

from datetime import datetime, timedelta 
from django import template 
from django.utils.timesince import timesince 

register = template.Library() 

@register.filter 
def timesince_threshold(value, days=7): 
    """ 
    return timesince(<value>) if value is more than <days> old. Return value otherwise 
    """ 

    if datetime.now() - value < timedelta(days=days): 
     return timesince(value) 
    else: 
     return value 
timesince_threshold.is_safe = False 
+0

喜过滤器给人一种错误“夹缝类型错误,而渲染:对于不支持的操作数类型(S) - :‘datetime.datetime’和“type '“ – manideep 2012-03-29 12:32:17

+0

更正了代码(我错过了'datetime.now()')。现在看 – 2012-03-29 12:33:46

+0

嗨@Secator请检查我编辑过的编辑 – manideep 2012-03-30 07:19:46