タイトルに意味があるかどうかはわかりませんが、ここで質問です。
コンテキスト: どの生徒が教室に出入りするかを追跡して、いつでも誰が教室にいるかを知ることができるようにしたいと考えています。また、生徒が教室に何回入ったかなどを追跡したいと考えています。これは、私が達成したいことに非常に近い架空の例です。
テーブル Classroom を作成し、各エントリには Student (ForeignKey)、Action (enter、leave)、および Date があります。
私の質問は、現在中にいる学生を取得する方法 (つまり、入力アクションの日付が退出アクションの日付よりも遅い、または退出日がない)、および日付範囲を指定して学生を取得する方法です。当時教室にあったもの。
編集:よく考えて、複数の教室があることも追加する必要があります.
私の最初の試みは次のようなものでした:
students_in = Classroom.objects.filter(classroom__exact=1, action__exact='1')
students_out = Classroom.objects.filter(classroom__exact=1, action__exact='0').values_list('student', flat=True)
students_now = students_in.exclude(student__in=students_out)
ここで、action
== 1 がイン、0 がアウトの場合。
ただし、これでは、生徒が教室を離れて再び教室に入るやいなや、誤ったデータが提供されます。students_now
2 つの「enters」と 1 つの「leave」があるため、彼女はクエリセットに 2 回リストされています。また、特定の日付範囲を調べて、入学日が退学日より後の生徒を確認することもできません。