Неподдерживаемые типы операндов для -: '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