Django et Total: Somme des valeurs distinctes?
Je suis en train de faire un django fonction d'agrégation, mais je suis incapable de produire le résultat désiré.
Ce que j'ai:
income_posts.values_list('category__name','amount')
[(u'Donation', Decimal("2000.00")), (u'Paycheck', Decimal("1200.00")), (u'Donation', Decimal("1000.00"))]
Résultat souhaité:
[(u'Donation', Decimal("3000.00")), (u'Paycheck', Decimal("1200.00))]
J'ai besoin de la Somme de la quantité de champs qui ont la même catégorie__nom.
OriginalL'auteur John Magistr | 2010-12-06
Vous devez vous connecter pour publier un commentaire.
De cette réponse à une question relative à la:
La raison pour laquelle cela fonctionne est que
.annotate()
fonctionne légèrement différemment après un.values()
: "Toutefois, lorsque les valeurs de() de la clause est utilisée pour contraindre les colonnes sont retournées dans le jeu de résultats, la méthode d'évaluation des annotations est légèrement différente. Au lieu de retourner une annoté résultat pour chaque résultat dans l'original QuerySet, les résultats originaux sont regroupées en fonction des combinaisons uniques de la les champs spécifiés dans les valeurs() de la clause."OriginalL'auteur Jordan Reiter
Si vous êtes sur Postgres, vous pouvez utiliser le
django-pg-utils
package pour la somme de valeurs distinctes.OriginalL'auteur arjun27
Juste pour ajouter à arjun27 de réponse. Depuis que le paquet semble avoir été abandonné, vous pouvez copier passé les 3 lignes que vous avez besoin de:
Qui peut être utilisé de la même que ci-dessus:
OriginalL'auteur Thomas Parslow