From 4344dd6e3560be66d1b324dc6ad8ff8d2c666316 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Wed, 4 Feb 2026 15:30:01 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F(admin)=20optimize=20room=20v?= =?UTF-8?q?iew=20queries=20by=20prefetching=20user=20access?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use prefetch_related for the room–user access relationship to avoid N+1 queries. select_related cannot be used here since this is a many-to-many relation. This significantly improves performance. --- src/backend/core/admin.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/backend/core/admin.py b/src/backend/core/admin.py index 97f1d277..d66c1c2c 100644 --- a/src/backend/core/admin.py +++ b/src/backend/core/admin.py @@ -115,6 +115,10 @@ class RoomAdmin(admin.ModelAdmin): list_filter = ["access_level", "created_at"] readonly_fields = ["id", "created_at", "updated_at"] + def get_queryset(self, request): + """Optimize queries by prefetching related access and user data to avoid N+1 queries.""" + return super().get_queryset(request).prefetch_related("accesses__user") + def get_owner(self, obj): """Return the owner of the room for display in the admin list."""