diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py index 015731b9a42e915517fc47fb7a7a462df1c4eee9..a22cc79e0c33d736a6fac875f77becfa5fdbd9a9 100644 --- a/aleksis/apps/alsijil/model_extensions.py +++ b/aleksis/apps/alsijil/model_extensions.py @@ -55,16 +55,20 @@ def mark_absent( continue with reversion.create_revision(): - personal_note, created = PersonalNote.objects.update_or_create( - person=self, - lesson_period=lesson_period, - week=wanted_week.week, - year=wanted_week.year, - defaults={ - "absent": absent, - "excused": excused, - "excuse_type": excuse_type, - }, + personal_note, created = ( + PersonalNote.objects.select_related(None) + .prefetch_related(None) + .update_or_create( + person=self, + lesson_period=lesson_period, + week=wanted_week.week, + year=wanted_week.year, + defaults={ + "absent": absent, + "excused": excused, + "excuse_type": excuse_type, + }, + ) ) personal_note.groups_of_person.set(self.member_of.all()) @@ -120,11 +124,17 @@ def get_personal_notes(self, persons: QuerySet, wanted_week: CalendarWeek): for personal_note in new_personal_notes: personal_note.groups_of_person.set(personal_note.person.member_of.all()) - return PersonalNote.objects.filter( - lesson_period=self, - week=wanted_week.week, - year=wanted_week.year, - person__in=persons, + return ( + PersonalNote.objects.filter( + lesson_period=self, + week=wanted_week.week, + year=wanted_week.year, + person__in=persons, + ) + .select_related(None) + .prefetch_related(None) + .select_related("person", "excuse_type") + .prefetch_related("extra_marks") )