次のようなモデルがあるとしましょう。
class Event(models.Model):
title = CharField(max_length=100)
start_time = DateTimeField()
これで、すべてのイベントが UTC でデータベースに保存されます。さて、ビュー側には、次のようなクラスがあります。
class EventListDay(ListView):
def get_queryset(self):
year, month, day = int(self.kwargs['year']), int(self.kwargs['month']), int(self.kwargs['day'])
target_day = datetime.datetime(year,month,day) #naive date type
target_day = timezone.make_aware(target_day, timezone.get_current_timezone()) #aware date time
return Event.confirmed_objects.get_events_for_day(target_day).order_by("start_time")
ここで、このビューが呼び出されると、その日に該当するすべてのイベントを含むクエリセットを取得します。唯一の問題は、返されるイベントがその日の UTCであるということです。たとえば、私は「アメリカ/シカゴ」のタイムゾーンにいて、午後 7 時以降に行われるイベントは翌日のリストに表示されます。
私が求めているのは、返されたイベントが現在のタイムゾーンのその日に収まるようにクエリを作成する方法です。