Джанго - вывести расчет - PullRequest
       41

Джанго - вывести расчет

0 голосов
/ 19 февраля 2019

Я пытаюсь вывести в html расчет, основанный на 2 агрегациях (суммах), хотя, он не отображает (typerror).Кто-нибудь может мне помочь?

в views.py: (выдержка)

def calcul(request, slug):
   numerator = CF.objects.filter(type='inflow').aggregate(sum=Sum('amount'))
   calculation = numerator / Main.objects.filter(slug=slug).aggregate(sum=Sum('total')
   return render(request, 'home/detail.html', { 'calculation' : calculation})

в моем шаблоне:

{{ calculation }} 

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Ваша агрегация выведет дикт, если вы добавите print(numerator), после него вы увидите дикт {'sum': <value>} (то же самое со знаменателем).

Вам нужен доступзначение, а затем использовать его:

def calcul(request, slug):
   numerator = CF.objects.filter(type='inflow').aggregate(sum=Sum('amount'))['sum']
   denominator = Main.objects.filter(slug=slug).aggregate(sum=Sum('total'))['sum']
   try:
       calculation = numerator / denominator
   except ZeroDivisionError:
       calculation = 0
   return render(request, 'home/detail.html', { 'calculation' : calculation})
0 голосов
/ 20 февраля 2019

Агрегация возвращает словарь, поэтому вы должны вывести значение и затем выполнить вычисления:

def calcul(request, slug):
    numerator = CF.objects.filter(type='inflow').aggregate(sum=Sum('amount'))
    calculation = numerator['sum'] / Main.objects.filter(slug=slug).aggregate(sum=Sum('total')['sum']
    return render(request, 'home/detail.html', { 'calculation' : calculation})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...