0

У меня есть простая задача агрегирования некоторых значений из базы данных, но проблема в том, что мне нужно сделать это в другом приложении django. Мне нужно суммировать сумму стоимости, цены и среднего за каждый месяц и отображать ее в таблице.Использование API агрегирования Django

Я использую общий ListView, поэтому я могу заполнить этот простой пример.

в views.py я есть:

from django.views.generic import ListView 
from django.db.models import Sum, Avg 

from projects_app.models import Project 


class ProjectStatisticsList(ListView): 
    model = Project 
    template_name = 'statistics_app/statistics_list.html' 

    def get_context_data(self, **kwargs): 
     context = super(ProjectStatisticsList, self).get_context_data(**kwargs) 
     context["price_aux"] = Project.objects.all().aggregate(Sum("price_aux")) 
     return context 

и в шаблоне у меня есть:

<tr> 
    <th class="align-left">{% trans 'Project income' %}</th> 
    <th class="align-left">{{ total.price_aux }}</th> 
</tr> 

Моя проблема заключается в том, что я ничего на шаблоне не получаю, так что мне интересно если я поступаю правильно, есть ли лучший способ.

ответ

4

В шаблоне, вместо того, чтобы делать {{ total.price_aux }} сделать:

<th class="align-left">{{ price_aux.price_aux__sum }}</th> 

price_aux является ключевым в контексте, и price_aux__sum ключ ДИКТ из запроса агрегации.

+0

да, спасибо, в этом была проблема, я неправильно интерпретировал ключи dict – PetarP

Смежные вопросы