Неподдерживаемые типы операндов для -: 'datetime.datetime' и 'datetime.date
В модели у меня есть свойство
accepted_at = models.DateTimeField(blank=True, null=True)
Когда я сохраню его
from datetime import datetime
Entry.objects.last().accepted_at = datetime.now()
Я пытаюсь узнать, принимается ли до 30 минут
from datetime import datetime
if (datetime.now() - Entry.objects.last().accepted_at).total_seconds() > 1800:
return True
Но я получаю следующую ошибку
unsupported operand type(s) for -: 'datetime.datetime' and 'datetime.date
Может ли кто-нибудь мне помочь?
Как гласит ошибка, вы не можете вычесть datetime.datetime
из datetime.date
. Я бы сначала отладил двойную проверку того, что Entry.objects.last().accepted_at
на самом деле является типом datetime.datetime
. Это можно сделать с помощью простого:
print( type(Entry.objects.last().accepted_at) == datetime )
или просто проверить тип:
print( type(Entry.objects.last().accepted_at) )
Если это не равно True
, то вы знаете, что это не datetime
.
Также для проверки того, что принятое время меньше чем 30 минут, необходимо немного изменить код. Убедитесь, что прошедшее время меньше или равно (<=) минутам до истечения срока действия:
from datetime import datetime
minutesBeforeExpiration = 30
secondsPerMin = 60
if (datetime.now() - Entry.objects.last().accepted_at).total_seconds() <= (minutesBeforeExpiration * secondsPerMin):
return True