diff options
| author | Alban Gruin | 2017-11-24 23:43:53 +0100 | 
|---|---|---|
| committer | Alban Gruin | 2017-11-24 23:57:04 +0100 | 
| commit | adad24ace9ab47f12d43dca494b358544beefa00 (patch) | |
| tree | 59951ec1051200d34165e23a355cf24b5f46aa1a | |
| parent | d9b78963e8526b803f1165c79ae2f97c6a36016b (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.
| -rw-r--r-- | models.py | 5 | 
1 files changed, 3 insertions, 2 deletions
@@ -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())) \  | 
