【发布时间】:2018-11-03 12:33:35
【问题描述】:
我有一个这样的模型:
class Interval(models.Model):
start = models.Datetime()
end = models.Datetime(null=True)
我想查询大于 5 分钟的所有时间间隔。
我能做到intervals=Interval.objects.exclude(end=None).annotate(d=models.F("end")-models.F("start"))
当我做 intervals[0].d 时,我有间隔,这是正确的。现在我只想得到 d 大于 5 分钟的条目作为结果。
我尝试了intervals=Interval.objects.exclude(end=None).annotate(d=models.F("end")-models.F("start")).filter(d__gt=timedelta(0, 300)),但收到以下错误:TypeError: expected string or bytes-like object。它尝试将 timedelta 与日期时间的正则表达式匹配。
`
有什么想法吗?
提前致谢
【问题讨论】:
-
.filter(end__lte=models.F("start")+timedelta(seconds=300))。像这样? -
@duduklein:你可能需要指定注解是
DurationField。 -
@itzMEonTV 这也有效,谢谢
标签: django orm django-queryset