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.

Вернуться на верх