Django查询:无论日期是什么,都获取仅“时间”大于HH:mm的对象?

时间:2019-10-07 03:58:19

标签: django django-models django-queryset django-orm

我有一个名为MinutePrice的模型,其中有一个DateTimeField作为字段之一。

我想做的是查询日期大于15:30的对象,而不管日期是什么。

我尝试过的事情:

MinuetePrice.objects.filter(Q(date_time__lte="15:30"))

发生错误:

ValidationError: ["'15:30' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."]

有什么办法解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

__time过滤器可用于此

MinuetePrice.objects.filter(date_time__time__gt=datetime.time(15, 30))

答案 1 :(得分:0)

如果您希望所有记录的时间都大于15:30,则可以尝试使用Django查询,如下所示:

MinuetePrice.objects.filter(Q(timestamp__hour__gte=16) | Q(timestamp__hour__gte=15, timestamp__minute__gte=30))

queryset time

中的文档

答案 2 :(得分:0)

您需要一个datetime对象进行比较,不能直接将它与字符串进行比较。

datetime.time(15,30)

应该可以解决您的问题

希望有帮助!