From bd92068b37d4842d646e313cebe94e7f74d61b89 Mon Sep 17 00:00:00 2001 From: LEdoian Date: Mon, 18 Mar 2019 00:34:37 +0100 Subject: [PATCH] =?UTF-8?q?Prednasky:=20v=20aktu=C3=A1ln=C3=ADch=20v=C3=BD?= =?UTF-8?q?sledc=C3=ADch=20jen=20aktu=C3=A1ln=C3=AD=20v=C3=BDsledky?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prednasky/views.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/prednasky/views.py b/prednasky/views.py index 1e66ee64..5d4e2eab 100644 --- a/prednasky/views.py +++ b/prednasky/views.py @@ -3,7 +3,7 @@ from django.shortcuts import render, get_object_or_404 from django.views import generic from django.shortcuts import HttpResponseRedirect from django.core.exceptions import ObjectDoesNotExist -from django.db.models import Sum +from django.db.models import Sum, Subquery from prednasky.models import Prednaska, Hlasovani, Seznam, STAV_NAVRH from seminar.models import Soustredeni @@ -55,9 +55,14 @@ class SeznamListView(generic.ListView): def get_queryset(self): self.seznam = get_object_or_404(Seznam, id=self.kwargs["seznam"]) + # Od "annotate" je to hack opsaný ze stack overflow, kterým se filtrují + # jen výsledky z aktuálního seznamu. Dosud se zobrazoval součet bodů u + # přednášky od počátku historie. + # TODO: udělat lépe (Django 2 má Sum s filtrem) prednasky = Prednaska.objects.filter(seznamy=self.seznam).order_by( 'org__user__first_name', 'org__user__last_name' - ).annotate(body=Sum('hlasovani__body')) + ).annotate(body=Subquery(Hlasovani.objects.filter(seznam=self.seznam) + .values('body').annotate(b=Sum('body')).values('b'))) return prednasky