是否可以执行一个 QuerySet 过滤器,从指定的重复时间跨度返回对象?
例如,给定相隔几天的开始日期和结束日期,我希望能够找到:
- 在开始和结束之间的每一天获取时间戳在下午 2 点到 7 点之间的所有对象
- 获取时间戳在 1am 和 8am 之间的每一天(星期六或星期日)的所有对象。
是否可以执行一个 QuerySet 过滤器,从指定的重复时间跨度返回对象?
例如,给定相隔几天的开始日期和结束日期,我希望能够找到:
未测试
对于第一种情况,假设 MyModel 并且您的时间戳称为 date 您可以执行以下操作:
import datetime
start_date = datetime.date(2012,7,1)
end_date = datetime.date(2012,7,16)
start_time = datetime.time(14,0)
end_time = datetime.time(19,0)
date_range = end_date - start_date
range_list = None
for days in xrange(date_range.days):
d = start_date + datetime.timedelta(days)
if range_list is None:
range_list = Q(date__range = (datetime.datetime.combine(d, start_time), datetime.datetime.combine(d, end_time)))
else:
range_list = range_list|Q(date__range = (datetime.datetime.combine(d, start_time), datetime.datetime.combine(d, end_time)))
MyModel.objects.filter(range_list)