From 36a8b4304b0928dccc6d7919caaf33815abd3cbb Mon Sep 17 00:00:00 2001 From: Nikita Marchant Date: Thu, 25 Dec 2025 21:34:43 +0100 Subject: [PATCH] Fix N+1 query on homepage for recent courses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add select_related("course") to the recent_views queryset to prevent multiple database queries when accessing course objects. This resolves the performance issue where a separate query was executed for each CourseUserView when building the recent_courses list. Fixes DOCHUB-21Y 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- www/views.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/www/views.py b/www/views.py index 6fba9be2..be5cec13 100644 --- a/www/views.py +++ b/www/views.py @@ -22,9 +22,11 @@ def index(request): .prefetch_related("tags") .order_by("-created")[:ndocs] ) - recent_views = CourseUserView.objects.filter(user=request.user).order_by( - "-last_view" - )[:5] + recent_views = ( + CourseUserView.objects.filter(user=request.user) + .select_related("course") + .order_by("-last_view")[:5] + ) recent_courses = [x.course for x in recent_views] context = { "search": SearchForm(),