From 8df179d0e2569e3925317b581c56a41817ca03fc Mon Sep 17 00:00:00 2001 From: Christian Henriksen Date: Thu, 29 Jan 2026 12:08:21 +0100 Subject: [PATCH 1/2] Prefetch and Select related objects in the view. Change template to loop through member list for each column, instead of making new queries. --- src/people/templates/people.html | 15 +++++++++------ src/people/views.py | 12 ++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/people/templates/people.html b/src/people/templates/people.html index a6d083ec3..ebf8582da 100644 --- a/src/people/templates/people.html +++ b/src/people/templates/people.html @@ -34,20 +34,23 @@

{{ team.name }} Team - {% for resp in team.leads.all %} - {{ resp.profile.get_public_credit_name }}
+ {% for member in team.teammember_set.all %} + {% if member.approved and member.lead %} + {{ member.user.profile.get_public_credit_name }}
+ {% endif %} {% endfor %} - {% for member in team.regular_members.all %} - {% if member.profile.get_public_credit_name != "Unnamed" %} - {{ member.profile.get_public_credit_name }}
+ {% for member in team.teammember_set.all %} + {% if member.approved and not member.lead and member.user.profile.get_public_credit_name != "Unnamed" %} + {{ member.user.profile.get_public_credit_name }}
{% endif %} {% empty %} No team members {% endfor %} {% if team.unnamed_members %} - {% if team.unnamed_members.count < team.regular_members.count %}Plus {% endif %}{{ team.unnamed_members.count }} anonymous member(s). + {% if team.unnamed_members.count < team.regular_members.count %}Plus {% endif %} + {{ team.unnamed_members.count }} anonymous member(s). {% endif %} diff --git a/src/people/views.py b/src/people/views.py index a783e120d..bdea9cacb 100644 --- a/src/people/views.py +++ b/src/people/views.py @@ -1,10 +1,22 @@ from __future__ import annotations from django.views.generic import ListView +from django.db.models import Prefetch from camps.models import Camp +from teams.models import TeamMember class PeopleView(ListView): template_name = "people.html" model = Camp + + def get_queryset(self): + return super().get_queryset().prefetch_related( + "teams", + Prefetch( + "teams__teammember_set", + queryset=TeamMember.objects.select_related("user__profile") + ) + ) + From 33ee63413c41d1d7587780c86890d99bc5e4ba03 Mon Sep 17 00:00:00 2001 From: Christian Henriksen Date: Thu, 29 Jan 2026 12:12:13 +0100 Subject: [PATCH 2/2] fixup! Prefetch and Select related objects in the view. --- src/people/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/people/views.py b/src/people/views.py index bdea9cacb..f6d36c17e 100644 --- a/src/people/views.py +++ b/src/people/views.py @@ -12,6 +12,7 @@ class PeopleView(ListView): model = Camp def get_queryset(self): + """Prefetch and Select related models for performance optimization.""" return super().get_queryset().prefetch_related( "teams", Prefetch(