2012-03-29 2 views
2

Фон:Как сравнить datetime в шаблоне django

Я хочу показать время и дату uptill всего 1 неделю. После этого я хочу показать только дату.

Я хочу сделать что-то вроде этого. (Это не работает)

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

EDIT: Привет, даже тогда с редактированием все я получаю время вместе со всеми parameters..i.e, даты и времени. что должно быть templatetag? как сейчас с помощью этого

{{ 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

Привет фильтр дает ошибку «Caught TypeError при рендеринге: неподдерживаемый тип операнда (ов) для -:„datetime.datetime“и«типа '" – manideep

+0

Исправлен код (я пропустил' datetime.now() '). См. Сейчас –

+0

Привет @Secator, пожалуйста, проверьте внесенные мной изменения – manideep

Смежные вопросы