aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Gruin2017-11-24 23:43:53 +0100
committerAlban Gruin2017-11-24 23:56:09 +0100
commit8a674b217055748a77e6b49d75eb5ccb71411bde (patch)
tree05723fdd60a0da764cb1317ca663bc8d4b81aa76
parent33d71f450619c8f0145b9c2b0516966e7b4f4ea5 (diff)
Correction d’un crash lorsqu’un groupe a des enfants ayant une mention différente.v0.11.3-pa1chprod/pa1ch/0.11.z
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.
-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())) \