Django: Лучшая практика для суммирования всех итоговых сумм на основе поля модели

Вот мой код

reports: queryset
    for reports in reports:
        data.append(DataModel(
            model_id=report.num,
            title=report.title,
            total_price=report.total_amount,
        ))

Этот код будет создавать некоторые объекты DataModel и добавлять их в список. Я хочу суммировать total_price всех объектов с одинаковыми obj.id.

Например: Если у нас есть эти объекты на наборе queryset:

< < <

Какова наилучшая практика для этого?

Model.objects.all().values("group_by_field").annotate(all_qty=Sum("total_price"))

Если вам не нужен доступ к ней через базу данных, вы можете вести текущий итог в дикте по мере прохождения отчетов. Я предполагаю, что вам не нужна эта информация непосредственно в списке 'data', поскольку это не сопоставление один к одному.

reports: queryset
    totals_dict = {}
    for reports in reports:
        data.append(DataModel(
            model_id=report.num,
            title=report.title,
            total_price=report.total_amount,
        ))
        if report.num in my_dict:
            totals_dict[report.num] += report.total_amount
        else:
            totals_dict[report.num] = report.total_amount
        #or, in one line
        #totals_dict[report.num] = totals_dict.get(report.num, 0) + report.total_amount
Вернуться на верх