Django Queryset查找日期之间的数据

时间:2018-07-29 11:14:45

标签: python django

我不知道标题是什么,我只是被卡住了,需要询问。

我有一个名为shift

的模型

并想象这样的db_table:

#table shift
+---------------+---------------+---------------+---------------+------------+------------+
| start         | end           | off_start     | off_end       | time       | user_id    |
+---------------+---------------+---------------+---------------+------------+------------+
| 2018-01-01    | 2018-01-05    | 2018-01-06    | 2018-01-07    | 07:00      | 1          |
| 2018-01-08    | 2018-01-14    | 2018-01-15    | Null          | 12:00      | 1          |
| 2018-01-16    | 2018-01-20    | 2018-01-21    | 2018-01-22    | 18:00      | 1          |
| 2018-01-23    | 2018-01-27    | 2018-01-28    | 2018-01-31    | 24:00      | 1          |
| ....          | ....          | ....          | ....          | ....       | ....       |
+---------------+---------------+---------------+---------------+------------+------------+

如果我将查询集与start=2018-01-01这样的过滤器一起使用,结果将为07:00

但是如果我输入12:00怎么获得结果2018-01-10?...

谢谢!

2 个答案:

答案 0 :(得分:1)

问题不太清楚,但也许您在追求类似 start__lte=2018-01-10, end__gte=2018-01-10

答案 1 :(得分:0)

通常,您可以通过间隔检查来做到这一点:end应该小于或等于您要查询的日期,而Shift应该大于或等于日期。您要查询。

因此,您可以获得from datetime import date t0 = date(2018, 1, 10) Shift.objects.filter(start__lte=t0, end__gte=t0)实例,其中它们的时间范围包括给定范围,

start

如果end和/或e日期为 non (包括两个日期),请删除相应的[HttpGet("tools/browse/{table}/{row}/{offset}")] 后缀。