Database 查找周期性时间范围内具有时间戳的对象

Database 查找周期性时间范围内具有时间戳的对象,database,django,django-models,django-queryset,Database,Django,Django Models,Django Queryset,是否可以使用QuerySet筛选器以指定的周期性时间跨度返回对象 例如,假设开始日期和结束日期相隔几天,我希望能够找到: 获取从开始到结束期间每天时间戳在下午2点到晚上7点之间的所有对象 获取时间戳在每天(周六或周日)凌晨1点到8点之间的所有对象 未测试 对于第一种情况,假设MyModel和时间戳被称为date,则可以执行以下操作: import datetime start_date = datetime.date(2012,7,1) end_date = datetime.date(20

是否可以使用QuerySet筛选器以指定的周期性时间跨度返回对象

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

  • 获取从开始到结束期间每天时间戳在下午2点到晚上7点之间的所有对象
  • 获取时间戳在每天(周六或周日)凌晨1点到8点之间的所有对象

    • 未测试

      对于第一种情况,假设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)