0

次のようなモデルがあるとしましょう。

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 時以降に行われるイベントは翌日のリストに表示されます。

私が求めているのは、返されたイベントが現在のタイムゾーンのその日に収まるようにクエリを作成する方法です。

4

1 に答える 1

0

さて、私はそれ以来私の問題を解決しました。私がしたことは、提供された kwargs から 2 つの日時を作成することでした。一つは一日の始まりであり、一つは終わりでした。次に、両方の datetime オブジェクトを認識させ、現在の tz をそれらにアタッチしました。次に、 .filter( start_time __range=(starttime, endtime) を使用しました

于 2012-10-18T01:25:59.433 に答える