首页 > 解决方案 > gte 仅显示本月的对象(等于)且不大于

问题描述

我将尝试在不暴露客户数据的情况下向您展示这一点

询问:

Booking.objects.filter(startTime__year__gte=2020, startTime__month__gte=7,startTime__day__gte=27, depositPaid=True).order_by('startTime')

这应该显示从 7 月 27 日(含)开始的所有预订,并且没有限制。但是,界限是第 8 个月。八月份的预订都没有显示。

如果我运行:

Booking.objects.filter(startTime__year__gte=2020, startTime__month__gte=8,startTime__day__gte=1, depositPaid=True).order_by('startTime')

然后我确实在八月份得到了所有的预订。我不明白为什么startTime__month__gte=7不显示八月。

标签: python-3.xdjangodjango-3.0

解决方案


过滤依据day__gte=27将仅返回当月的日期为 27 或更大的结果,无论是什么月份,8 月的日期小于 27 的日期将不会返回。

如果您想在某个日期之后过滤结果,您应该将其作为对列的单个查询进行,而不是作为对日期部分的单独查询。

import datetime
Booking.objects.filter(startTime__gte=datetime.date(2020, 7, 27), depositPaid=True).order_by('startTime')

推荐阅读