Disons que j'ai la structure du modèle suivant:django annoter modèles avec une valeur globale basée sur requête
Parent():
Child():
parent = ForeignKey(Parent)
GrandChild():
child = ForeignKey(Child)
state = BooleanField()
num = FloatField()
Je suis en train de le parent ViewSet
, récupérer les éléments suivants:
- Le Nombre d'enfants.
- Somme des champs 'num' lorsque 'state' a la valeur True.
je peux faire ce qui suit:
queryset = Parent.objects\
.annotate(child_count=Count('child'))\
.annotate(sum_total=Sum('child__grandchild__num'))
Cela me donne (1) mais au lieu de (2) il me donne la somme pour TOUS les petits-enfants. Comment puis-je filtrer correctement les petits-enfants tout en m'assurant que tous les objets Parent
sont toujours dans le QuerySet?
Cela fonctionnerait, mais je dois m'assurer que j'ai tous les objets parents. Désolé, je vais éditer la question initiale. – Eric
@Eric Vous obtiendrez le jeu de requête de l'objet parent à partir de ceci. –
Que faire si le parent particulier n'a pas GrandChild? – Eric