diff --git a/membershipworks/models.py b/membershipworks/models.py index db02c97..e4002e8 100644 --- a/membershipworks/models.py +++ b/membershipworks/models.py @@ -4,7 +4,7 @@ from datetime import datetime import django.core.mail.message from django.conf import settings from django.db import models -from django.db.models import Exists, F, OuterRef, Sum +from django.db.models import Exists, F, OuterRef, Subquery, Sum from django.utils import timezone @@ -415,7 +415,19 @@ class EventInstructor(models.Model): class EventExtManager(models.Manager["EventExt"]): def get_queryset(self) -> models.QuerySet["EventExt"]: - return super().get_queryset().annotate(duration=Sum("meeting_times__duration")) + return ( + super() + .get_queryset() + .annotate( + duration=Subquery( + EventMeetingTime.objects.filter(event=OuterRef("pk")) + .values("event__pk") + .annotate(d=Sum("duration")) + .values("d")[:1], + output_field=models.DurationField(), + ), + ) + ) class EventExt(Event):