From 9b35463de4d79d9547f9307f9728f69b49d36a5f Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Tue, 3 Sep 2019 19:59:54 +0200 Subject: [PATCH] Prefetch related lesson substitution data. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s still not used yet, due to filtering; this will appear in a subsequent commit. --- biscuit/apps/chronos/views.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py index f4b4187b..73a517d1 100644 --- a/biscuit/apps/chronos/views.py +++ b/biscuit/apps/chronos/views.py @@ -31,7 +31,13 @@ def timetable(request: HttpRequest, week: Optional[int] = None) -> HttpResponse: lesson_periods = LessonPeriod.objects.filter( lesson__date_start__gte=week_days(wanted_week)[0], lesson__date_end__lte=week_days(wanted_week)[-1] - ).select_related('period', 'lesson').extra(select={'_week': wanted_week}) + ).select_related( + 'period', 'lesson' + ).prefetch_related( + 'substitutions' + ).extra( + select={'_week': wanted_week} + ) if request.GET.get('group', None) or request.GET.get('teacher', None) or request.GET.get('room', None): # Incrementally filter lesson periods by GET parameters -- GitLab