Django datetime字段打印不支持的操作数类型错误



我有一个@property在我的django模型打印出TrueFalse基于日期时间差。尽管它在单元测试时可以工作,但我得到了错误

TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'datetime.date'
class MyModel(models.Model):
...
created_at = models.DateTimeField(auto_now_add=True)

@property
def is_expired(self):
if datetime.now(tz=utc) - self.created_at > timedelta(hours=48):
return True
return False

如何解决这个问题?我查的每个答案都帮不了我。

回溯错误正在向您解释问题:

不支持-:'datetime '的操作数类型。Datetime '和' Datetime .date'

这表示您不能从datetime.date中减去datetime.datetime。在您的情况下,self.created_at似乎是date,但您使用datetime.now()timedelta()表明您真正想要处理datetimes。

因此,解决方案是
  1. 确保created_atdatetime,或者
  2. datetime.now()改为date.today(),将timedelta(hours=48)改为timedelta(days=2)

它们的行为略有不同,因此根据物品是在两个日历日后到期还是在48小时内到期来选择一个。

相关内容

  • 没有找到相关文章

最新更新