From f93485febeac1722011936906d023a471e11db5e Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Mon, 7 Sep 2020 14:18:01 +0200 Subject: [PATCH] Add group manager in order to prefetch related school term everytime --- aleksis/core/managers.py | 12 ++++++++++++ aleksis/core/models.py | 9 ++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/aleksis/core/managers.py b/aleksis/core/managers.py index a08710780..02a0cb6fb 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 bd1cfe12d..00a2faacd 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") -- GitLab