SUM столбцы в Django - PullRequest
       0

SUM столбцы в Django

0 голосов
/ 27 февраля 2020

У меня есть простая модель, которая собирает данные (в частности, целые числа) для отображения результатов выборов в таблице. У меня есть 2 региона (более конечно, но давайте скажем два пока), откуда будут поступать данные. Я хочу отобразить каждый регион и сумму для каждого региона, а затем отобразить сумму в нижней части таблицы

Моя базовая модель выглядит следующим образом:

class Results(models.Model)
    region_number = models.Foreignkey(Regions)
    region_name = models.Charfield()
    polling_station = models.Charfield()
    party1 = models.IntegerField()
    party2 = models.IntegerField()
    party3 = models.IntegerField()

Тогда у меня есть два класса Наследование

class GeneralElections(Results)
    pass

class RegionalElections(Results)
    pass

И я хочу, чтобы напечатанный вывод в моем шаблоне выглядел примерно так

---------------------------------
regions   party1   party2  party3
---------------------------------
1         20       40      60
2         20       80      100
---------------------------------
Total     80       120     160    <------- More Importantly This!
---------------------------------

Кроме того, я хочу, чтобы у меня была сводная страница, отображающая

   General Elections
-----------------------
party1   party2  party3
-----------------------
80       120     160


   Regional Elections
-----------------------
party1   party2  party3
-----------------------
50       85      210

До этого момента мне удавалось выполнить sh все, кроме того, что я мог напечатать сумму каждого столбца в нижней части таблицы

Везде, где я смотрел, сказано, что он использует django агрегация. Однако инструкции немного расплывчаты. Может потому что я новичок. Я запутался, где поставить соответствующие коды например.

from django.db.import SUM

  1. Откуда этот импорт go? В models.py? или views.py?

total = Tally.objects.aggregate(Sum("field_name"))

Где я могу поставить эту функцию?

Какое поле_имя мне использовать? Несколько имен полей, для которых я хочу SUM. По одному на каждую вечеринку

Я прошу прощения, если на этот вопрос уже был дан ответ, но у меня не хватает времени, и я не смог найти никакой подробной информации по этому поводу.

Я очень ценю, если кто-то может указать мне правильное направление и сэкономить мне много времени, так как мне нужно, чтобы это приложение появилось в сети за считанные часы.

Заранее спасибо!

1 Ответ

0 голосов
/ 27 февраля 2020

Для сумм по полям вы можете использовать что-то вроде:

from django.db.models import Sum

agrregated_results = Results.objects.filter(# if you have any).agrregate(Sum('party1'), Sum('party2'), Sum('party3'))
party1_sum = agrregated_results['party1__sum'] or 0
... # same for other fields

и для сводной страницы регионов:

region_summary = Results.objects.values('region_number').annotate(party1_sum=Sum('party1'), party2_sum=Sum('party2'), party3_sum=Sum('party3')).order_by()

, где .values(...).annotate(...).order_by() переводится в:

SELECT fields_in_values_plus_annotation FROM table_name GROUP BY fields_in_values ORDER BY NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...