diff --git a/aleksis/core/managers.py b/aleksis/core/managers.py index a0871078015df8e117a09e23a593b384f7b25dc2..02a0cb6fb6504d931b3d848217b154951d8a0932 100644 --- a/aleksis/core/managers.py +++ b/aleksis/core/managers.py @@ -79,3 +79,15 @@ class SchoolTermRelatedQuerySet(QuerySet): return self.for_school_term(current_school_term) else: return None + + +class GroupManager(CurrentSiteManagerWithoutMigrations): + """Manager adding specific methods to groups.""" + + def get_queryset(self): + """Ensure all related data is loaded as well.""" + return super().get_queryset().select_related("school_term") + + +class GroupQuerySet(SchoolTermRelatedQuerySet): + pass diff --git a/aleksis/core/models.py b/aleksis/core/models.py index bd1cfe12d531e95e4a5d0b7d1e480cf60b91717f..00a2faacdfb9c39cc1ca50e7b8a92277564ba315 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -23,7 +23,12 @@ from dynamic_preferences.models import PerInstancePreferenceModel from phonenumber_field.modelfields import PhoneNumberField from polymorphic.models import PolymorphicModel -from .managers import CurrentSiteManagerWithoutMigrations, SchoolTermQuerySet +from .managers import ( + CurrentSiteManagerWithoutMigrations, + GroupManager, + GroupQuerySet, + SchoolTermQuerySet, +) from .mixins import ExtensibleModel, PureDjangoModel, SchoolTermRelatedExtensibleModel from .tasks import send_notification from .util.core_helpers import get_site_preferences, now_tomorrow @@ -313,6 +318,8 @@ class Group(SchoolTermRelatedExtensibleModel): classes, clubs, and the like. """ + objects = GroupManager.from_queryset(GroupQuerySet)() + class Meta: ordering = ["short_name", "name"] verbose_name = _("Group")