2012-07-16 52 views
0

是否有可能執行QuerySet過濾器,以返回指定的循環時間跨度的對象?在循環時間範圍內查找帶有時間戳的對象

例如,給定一個開始和結束日期相隔了幾天,我想能夠找到:

  • 獲取與下午2時至晚上七時戳的所有對象的起點和終點之間的每一天
  • 獲取時間戳爲1am到8am之間的所有對象,包括星期六或星期天的每一天。

回答

1

未測試

對於第一種情況,假設爲MyModel和您的時間戳被稱爲日期,你可以這樣做:

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) 
相關問題