diff --git a/aleksis/apps/alsijil/managers.py b/aleksis/apps/alsijil/managers.py
new file mode 100644
index 0000000000000000000000000000000000000000..b2589345adac4c2c02159ea54fc872fe9055408a
--- /dev/null
+++ b/aleksis/apps/alsijil/managers.py
@@ -0,0 +1,23 @@
+from aleksis.core.managers import CurrentSiteManagerWithoutMigrations
+
+
+class PersonalNoteManager(CurrentSiteManagerWithoutMigrations):
+    """Manager adding specific methods to personal notes."""
+
+    def get_queryset(self):
+        """Ensure all related lesson and person data are loaded as well."""
+        return (
+            super()
+            .get_queryset()
+            .select_related(
+                "person",
+                "excuse_type",
+                "lesson_period",
+                "lesson_period__lesson",
+                "lesson_period__lesson__subject",
+                "lesson_period__period",
+                "lesson_period__lesson__validity",
+                "lesson_period__lesson__validity__school_term",
+            )
+            .prefetch_related("extra_marks")
+        )
diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py
index 66f6477d22165c085abd0855502686d505d75c75..e64bac1afd260f3571c17bfa6b2c639c03d5b915 100644
--- a/aleksis/apps/alsijil/models.py
+++ b/aleksis/apps/alsijil/models.py
@@ -4,6 +4,7 @@ from django.utils.translation import gettext_lazy as _
 
 from calendarweek import CalendarWeek
 
+from aleksis.apps.alsijil.managers import PersonalNoteManager
 from aleksis.apps.chronos.mixins import WeekRelatedMixin
 from aleksis.apps.chronos.models import LessonPeriod
 from aleksis.apps.chronos.util.date import get_current_year
@@ -46,6 +47,8 @@ class PersonalNote(ExtensibleModel, WeekRelatedMixin):
     and remarks about a student in a single lesson period.
     """
 
+    objects = PersonalNoteManager()
+
     person = models.ForeignKey(
         "core.Person", models.CASCADE, related_name="personal_notes"
     )