diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py
index f4b4187b955adaca510518697f5419e19c847d38..73a517d1f3c37b80ad9df87ac9d2ab6625ce89c7 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