Fix count annotations in exam collection to use distinct values for accurate user counts

This commit is contained in:
Ross
2026-01-04 12:55:53 +00:00
parent 3e691d774c
commit e600b8eb91
+4 -4
View File
@@ -192,8 +192,8 @@ def exam_collection_exams_partial(request, collection_id: int, exam_type: str):
related_qs = (
ExamModel.objects.filter(pk__in=pks)
.annotate(
valid_cid_users_count=Count("valid_cid_users"),
valid_user_users_count=Count("valid_user_users"),
valid_cid_users_count=Count("valid_cid_users", distinct=True),
valid_user_users_count=Count("valid_user_users", distinct=True),
)
.prefetch_related("author")
.order_by("name")
@@ -1925,8 +1925,8 @@ class ExamViews(View, LoginRequiredMixin):
# Annotate counts for template usage so `.count()` is not called per-object.
# Use unfiltered counts to match the per-exam `exam_overview` counts.
exam_list = exam_list.annotate(
valid_cid_users_count=Count("valid_cid_users"),
valid_user_users_count=Count("valid_user_users"),
valid_cid_users_count=Count("valid_cid_users", distinct=True),
valid_user_users_count=Count("valid_user_users", distinct=True),
).select_related("examcollection").prefetch_related("author")
if not all: