aboutsummaryrefslogtreecommitdiff
path: root/models.py
diff options
context:
space:
mode:
authorAlban Gruin2017-11-24 23:43:53 +0100
committerAlban Gruin2017-11-24 23:57:04 +0100
commitadad24ace9ab47f12d43dca494b358544beefa00 (patch)
tree59951ec1051200d34165e23a355cf24b5f46aa1a /models.py
parentd9b78963e8526b803f1165c79ae2f97c6a36016b (diff)
Correction d’un crash lorsqu’un groupe a des enfants ayant une mention différente.
L’annotation Count() renvoie plusieurs valeurs différentes, alors que Subquery n’en accepte qu’une seule. Corrigé en rajoutant une valeur statique (0) par annotation et en regroupant en se basant sur cette valeur.
Diffstat (limited to 'models.py')
-rw-r--r--models.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/models.py b/models.py
index 14270cf..40406e3 100644
--- a/models.py
+++ b/models.py
@@ -16,7 +16,7 @@
from functools import reduce
from django.db import models
-from django.db.models import Count, Manager, Q, Subquery
+from django.db.models import Count, Manager, Q, Subquery, Value
from django.db.models.expressions import OuterRef
from django.db.models.functions import ExtractWeek, ExtractYear
from django.utils import timezone
@@ -86,7 +86,8 @@ class GroupManager(Manager):
sub = self.get_queryset().filter(timetable=timetable,
mention__startswith=OuterRef("mention"),
subgroup__startswith=OuterRef("subgroup")) \
- .order_by().values("mention").annotate(c=Count("*")).values("c")
+ .annotate(v=Value(0)).values("v") \
+ .annotate(c=Count("v")).values("c") # fuck Count()
return self.get_queryset().filter(*args, timetable=timetable, hidden=False, **criteria) \
.annotate(nbsub=Subquery(sub, output_field=models.IntegerField())) \