diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py
index 2ba38ff0711f341a242785bf3e9521f470d6d3d3..45aecf55b7553f0bd61c74cc4fee19e65f05b8d9 100644
--- a/aleksis/apps/chronos/managers.py
+++ b/aleksis/apps/chronos/managers.py
@@ -9,13 +9,13 @@ from django.db.models.fields import DateField
 from django.db.models.functions import Concat
 
 from calendarweek import CalendarWeek
-from polymorphic.managers import PolymorphicQuerySet
 
 from aleksis.apps.chronos.util.date import week_weekday_from_date, week_weekday_to_date
 from aleksis.apps.cursus.models import Course
 from aleksis.core.managers import (
     AlekSISBaseManagerWithoutMigrations,
     DateRangeQuerySetMixin,
+    RecurrencePolymorphicQuerySet,
     SchoolTermRelatedQuerySet,
 )
 from aleksis.core.models import Group, Person, Room
@@ -866,7 +866,7 @@ class RoomPropertiesMixin:
         return sep.join([room.short_name for room in self.get_rooms()])
 
 
-class LessonEventQuerySet(PolymorphicQuerySet):
+class LessonEventQuerySet(RecurrencePolymorphicQuerySet):
     """Queryset with special query methods for lesson events."""
 
     def for_teacher(self, teacher: Union[int, Person]) -> "LessonEventQuerySet":
diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index 732c95d53a22ecdb3764b4f71bf55a5b3aa6e410..187e0d6d7ef61eb63cd7b641a90bc1f687ae8067 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -59,7 +59,10 @@ from aleksis.apps.chronos.util.format import format_m2m
 from aleksis.apps.cursus import models as cursus_models
 from aleksis.apps.cursus.models import Course
 from aleksis.apps.resint.models import LiveDocument
-from aleksis.core.managers import AlekSISBaseManagerWithoutMigrations, PolymorphicBaseManager
+from aleksis.core.managers import (
+    AlekSISBaseManagerWithoutMigrations,
+    RecurrencePolymorphicManager,
+)
 from aleksis.core.mixins import (
     ExtensibleModel,
     GlobalPermissionModel,
@@ -1290,7 +1293,7 @@ class LessonEvent(CalendarEvent):
     name = "lesson"
     verbose_name = _("Lessons")
 
-    objects = PolymorphicBaseManager.from_queryset(LessonEventQuerySet)()
+    objects = RecurrencePolymorphicManager.from_queryset(LessonEventQuerySet)()
 
     title = models.CharField(verbose_name=_("Name"), max_length=255, blank=True)
 
@@ -1525,12 +1528,12 @@ class LessonEvent(CalendarEvent):
 
     @classmethod
     def get_objects(
-        cls, request: HttpRequest | None = None, params: dict[str, any] | None = None
+        cls, request: HttpRequest | None = None, params: dict[str, any] | None = None, **kwargs
     ) -> Iterable:
         """Return all objects that should be included in the calendar."""
         objs = (
             super()
-            .get_objects(request, params)
+            .get_objects(request, params, **kwargs)
             .not_instance_of(SupervisionEvent)
             .select_related("subject", "course")
             .prefetch_related("groups", "teachers", "rooms", "groups__members")
@@ -1587,7 +1590,7 @@ class SupervisionEvent(LessonEvent):
     name = "supervision"
     verbose_name = _("Supervisions")
 
-    objects = PolymorphicBaseManager.from_queryset(LessonEventQuerySet)()
+    objects = RecurrencePolymorphicManager.from_queryset(LessonEventQuerySet)()
 
     @classmethod
     def value_title(cls, reference_object: LessonEvent, request: HttpRequest | None = None) -> str:
@@ -1609,10 +1612,10 @@ class SupervisionEvent(LessonEvent):
 
     @classmethod
     def get_objects(
-        cls, request: HttpRequest | None = None, params: dict[str, any] | None = None
+        cls, request: HttpRequest | None = None, params: dict[str, any] | None = None, **kwargs
     ) -> Iterable:
         """Return all objects that should be included in the calendar."""
-        objs = cls.objects.instance_of(cls)
+        objs = super().get_objects(request, params, **kwargs).instance_of(cls)
         if params:
             obj_id = int(params.get("id", 0))
             type_ = params.get("type", None)