Как в Django при группировке суммировать несколько полей?

Есть таблица вида:
id  |   started |   finished
1   |   2       |   1       
2   |   2       |   1       
1   |   4       |   3


Как сгруппировать по id и получить суммы?
Что бы мы получили объекты типа {id:1, started:6, finished:4}, {id:2,started:2,finished:1}
  • Вопрос задан
  • 2616 просмотров
Решения вопроса 1
winordie
@winordie
Лучшая документация -- исходники
Думаю вам надо это: djbook.ru/rel1.6/topics/db/aggregation.html#genera...

Если у вас есть модель
class Habr(models.Model):
    idn = models.Integer()
    started = models.Integer()
    finished = models.Integer()

то необходимый результат можно получить так:
input:  from app.models import Habr
input:  habr = Habr.objects.all()
input:  from django.db.models import Sum
input:  habr.values('idn').annotate(s1=Sum('started'),s2=Sum('finished'))

output: [{'idn': 1, 's2': 4, 's1': 6}, {'idn': 2, 's2': 1, 's1': 2}]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы