不支持的操作数类型 -:"日期时间.日期时间"和"日期时间.日期"



在模型中,我有一个属性

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.date中减去datetime.datetime。我会首先进行调试,仔细检查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

最新更新