Я не уверен, имеет ли название смысл, но вот вопрос.
Контекст: я хочу отслеживать, какие учащиеся входят и выходят из класса, чтобы в любой момент я мог знать, кто находится в классе. Я также хочу отслеживать, например, сколько раз ученик входил в класс. Это гипотетический пример, который очень близок к тому, чего я хочу достичь.
Я создал таблицу Classroom, и у каждой записи есть Студент (ForeignKey), Действие (ввод, отъезд) и Дата.
Мой вопрос заключается в том, как получить учеников, которые в данный момент находятся внутри (т. Е. Дата их вступительных действий более поздняя, чем дата их отпусков или не имеет даты отпуска), и как указать диапазон дат для найдите учеников, которые были в классе в то время.
Редактировать : Если подумать, я должен также добавить, что существует более одной классной комнаты.
моя первая попытка была примерно такой:
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
, так как есть два входа и один отпуск. Кроме того, я не могу проверить конкретные диапазоны дат, чтобы узнать, у каких студентов есть дата поступления, более поздняя, чем их дата отпуска.