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 /models.py | |
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.
Diffstat (limited to 'models.py')
-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())) \ |