Django annotate: суммировать все записи по активам | только одна таблица
Моя модель django:
class Movimentacao(models.Model):
product = models.CharField(max_length=300)
value = models.DecimalField(max_digits=19, decimal_places=2)
Я пытаюсь SUM все value
на product
используя django annotate. Я пробовал:
query = Movimentacao.objects.annotate(total=Sum('value')
).values('product', 'total'
).order_by('product')
Но он показывает все записи, не группируя и не суммируя их все.
Я бы не хотел использовать агрегат в этом случае.
Tks
Вы используете .values(…)
[Django-doc] сначала:
from django.db.models import Sum
query = (
Movimentacao.objects.values('product')
.annotate(total=Sum('value'))
.order_by('product')
)
При этом, если одно и то же product
встречается несколько раз, обычно лучше всего сделать модель Product
и работать с ForeignKey
.