0

是否可以执行一个 QuerySet 过滤器,从指定的重复时间跨度返回对象?

例如,给定相隔几天的开始日期和结束日期,我希望能够找到:

  • 在开始和结束之间的每一天获取时间戳在下午 2 点到 7 点之间的所有对象
  • 获取时间戳在 1am 和 8am 之间的每一天(星期六或星期日)的所有对象。
4

1 回答 1

1

未测试

对于第一种情况,假设 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)
于 2012-07-16T23:07:09.430 回答