0

Я хочу найти количество дней между датой и датой через 15 дней. создать Personnal фильтр:django personal filter datetime

register = template.Library() 

import datetime 

@register.filter 
def nbDays(thedate): 
    res = 0 
    passed = datetime.datetime.now() - thedate 
    res = 15 - passed 
return res 

У меня есть эта ошибка:

can't subtract offset-naive and offset-aware datetimes 

Когда я вызываю метод:

{% load nameOfFile %} 

{{ objectGood.created_at|nbDays }} 
+0

У вас есть 'USE_TZ = true' в настройках? –

+0

Нет Я ищу, как использует его – YassVegas

+0

Верна: У меня есть эта USE_I18N = True USE_L10N = True USE_TZ = True – YassVegas

ответ

0

Если у вас есть часовые пояса включены в настройках, то вам необходимо сделать все ваши уведомления о часовых поясах datetime.

Django делает это довольно легко;

register = template.Library() 

from django.utils import timezone 

@register.filter 
def nbDays(thedate): 
    res = 0 
    passed = timezone.now() - thedate 
    res = 15 - passed 
return res 

В качестве альтернативы вы можете удалить информацию о часовом поясе из объекта datetime;

timezone_unaware_date = thedate.replace(tzinfo=None)

+0

Это делать не работает, у меня есть эта ошибка: неподдерживаемый тип операнда (ов) для -: «Int 'и' datetime.timedelta '. Но я нахожу решение: now = datetime.datetime.utcnow(). Replace (tzinfo = utc), но я не знаю полностью. Спасибо – YassVegas

+0

Вы делаете '15 - pass', где' pass' - это объект datetime. Вам нужно посмотреть 'relativedelta', если вы хотите начать сложение/вычитание дней и т. Д. Из объектов datetime. http://labix.org/python-dateutil#head-72c4689ec5608067d118b9143cef6bdffb6dad4e –