2012-03-29 82 views
2

背景:如何比較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 }} 這給沒有試過確切時間。幾周和幾天。仍然無法弄清楚。

回答

3

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