Как вычислить агрегированную сумму с помощью django ORM?

Я пытаюсь сгруппировать_by() данные на основе дат и с каждым днем я хочу вычислить Количество в этот день и общее количество на данный момент.

Пример вывода, который я получаю:

[
    {
        "dates": "2022-11-07",
        "count": 1
    },
    {
        "dates": "2022-11-08",
        "count": 3
    },
    {
        "dates": "2022-11-09",
        "count": 33
    }
]

Пример вывода, которого я пытаюсь достичь:

[
    {
        "dates": "2022-11-07",
        "count": 1,
        "aggregate_count": 1
     },
    {
        "dates": "2022-11-08",
        "count": 3,
        "aggregate_count": 4
    },
    {
        "dates": "2022-11-09",
        "count": 33,
        "aggregate_count": 37
    }
]

Я пытался решить вашу проблему следующим образом

Логика кода

cumulative_count= 0

response = [
    {
        "dates": "2022-11-07",
        "count": 1
    },
    {
        "dates": "2022-11-08",
        "count": 3
    },
    {
        "dates": "2022-11-09",
        "count": 33
    }
]

for i in responce:
    cumulative_count +=i['count']
    i['cumulative_count'] = cumulative_count

print(responce)

Выход

[
    {
        'dates': '2022-11-07', 
        'count': 1, 
        'cumulative_count': 1
    }, 

    {
        'dates': '2022-11-08', 
        'count': 3, 
        'cumulative_count': 4
    }, 

    {
        'dates': '2022-11-09', 
        'count': 33, 
        'cumulative_count': 37
    }
]

NOTE: Преобразуйте ваш ответ ORM Query в список словарей, тогда вы сможете достичь этих вещей.

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