Django: obtenir la valeur agrégée des deux colonnes multipliées
-
18-09-2019 - |
Question
Je dois obtenir la valeur agrégée des deux colonnes. Alors d'abord les multiples ensemble et ensuite obtenir leur sum()
. Code ci-dessous ne fonctionne naturellement pas, il est juste pour la clarification.
Est-il possible d'une certaine manière ou devrais-je utiliser SQL cru?
SomeModel.objects
.filter(**something)
.aggregate(Sum('one_column' * 'another_col'))
Autres conseils
Comme je l'ai répondu ici https://stackoverflow.com/a/36024089/4614802 la bonne solution dépend de la version de django.
- Pour django <1,8 utilisation
.aggregate(Sum('field1', field="field1*field2"))
- Pour django> = 1,8 utilisation
.aggregate(Sum(F('field1')*F('field2'))
Ceci est sparte. De cette façon, si vous voulez imprimer quelque part dans un modèle que vous devez utiliser quelque chose comme ceci:
{{ queryset.0.total }}
Cela a été répondu correctement ici: Django agrégation: Sommation La multiplication des deux champs
La forme est la suivante:
agg = Task.objects.all().aggregate(total=Sum('field1', field="field1*field2"))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow