Django: calcule la sum des valeurs de la colonne via la requête

J’ai un modèle

class ItemPrice( models.Model ): price = models.DecimalField ( max_digits = 8, decimal_places=2 ) .... 

J’ai essayé ceci pour calculer la sum des price dans cette requête:

 items = ItemPrice.objects.all().annotate(Sum('price')) 

qu’est-ce qui ne va pas dans cette requête? ou existe-t-il un autre moyen de calculer la colonne Somme des price ?

Je sais que cela peut être fait en utilisant pour loop sur queryset mais j’ai besoin d’une solution élégante.

Merci!

Vous recherchez probablement des aggregate

 from django.db.models import Sum ItemPrice.objects.aggregate(Sum('price')) 

Annoter ajoute un champ aux résultats:

 >> Order.objects.annotate(total_price=Sum('price')) , ]> >> orders.first().total_price Decimal('340.00') 

L’agrégat renvoie un dict avec le résultat demandé:

 >> Order.objects.aggregate(total_price=Sum('price')) {'total_price': Decimal('1260.00')} 

Utiliser l’agrégat (Sum (‘column’)) [‘column__sum’]

 sum = Sale.objects.filter(type='Flour').aggregate(Sum('column'))['column__sum']