diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py
index fb9e57c40fa66ce75b93e11c451cb87a6b21f69c..9d7b398dab8415a7ff05333c823879a165af0e95 100644
--- a/aleksis/apps/alsijil/models.py
+++ b/aleksis/apps/alsijil/models.py
@@ -4,8 +4,7 @@ from typing import Optional
 from django.contrib.auth.models import User
 from django.core.exceptions import PermissionDenied
 from django.db import models
-from django.db.models import QuerySet
-from django.db.models.query_utils import Q
+from django.db.models import QuerySet, Q
 from django.http import HttpRequest
 from django.urls import reverse
 from django.utils import timezone
@@ -438,20 +437,21 @@ class ParticipationStatus(CalendarEvent):
 
     @classmethod
     def get_objects(
-        cls, request: HttpRequest | None = None, params: dict[str, any] | None = None, **kwargs
+        cls, request: HttpRequest | None = None, params: dict[str, any] | None = None, additional_filter: Q | None = None, **kwargs
     ) -> QuerySet:
-        qs = (
-            super()
-            .get_objects(request, params, **kwargs)
-            .select_related("person", "absence_reason")
-        )
+        q = additional_filter or Q()
         if params:
             if params.get("person"):
-                qs = qs.filter(person=params["person"])
+                q = q & Q(person=params["person"])
             elif params.get("persons"):
-                qs = qs.filter(person__in=params["persons"])
+                q = q & Q(person__in=params["persons"])
             elif params.get("group"):
-                qs = qs.filter(groups_of_person__in=params.get("group"))
+                q = q & Q(groups_of_person__in=params.get("group"))
+        qs = (
+            super()
+            .get_objects(request, params, additional_filter=q, select_related=["person", "absence_reason"], **kwargs)
+        )
+
         return qs
 
     @classmethod