在模型中,我有一个属性
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