指定された定期的な期間からオブジェクトを返す QuerySet フィルターを実行することは可能ですか?
たとえば、開始日と終了日が数日離れている場合、次のことを見つけたいと思います。
- 開始から終了までの毎日の午後 2 時から午後 7 時までのタイムスタンプを持つすべてのオブジェクトを取得します
- 土曜日または日曜日のいずれかである毎日の午前 1 時から午前 8 時までのタイムスタンプを持つすべてのオブジェクトを取得します。
指定された定期的な期間からオブジェクトを返す QuerySet フィルターを実行することは可能ですか?
たとえば、開始日と終了日が数日離れている場合、次のことを見つけたいと思います。
未検証
最初のケースでは、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)