Django - Деление результата набора запросов на целое число

Я довольно новичок в Django и немного запутался в этом. У меня есть представление, которое показывает сумму десятичного поля (сумма), сгруппированную по имени внешних ключей (accountplan):

def projection(request):
    divider = int(date.today().strftime('%d'))
    qs = ManagerialRevenue.objects.values('accountplan__name').annotate(Sum('amount'))

    return render(request, 'app/pages/planning/projection.html', context={'qs': qs,})

Мне нужно разделить каждое аннотированное поле суммы в переменной qs на переменную делитель. В шаблоне я могу перебирать qs:

{% for item in qs %}
    {{ item.accountplan__name }}
    {{ item.amount__sum }}
{% endfor %}

Но когда я пытаюсь разделить значения, добавляя эту строку в представлении:

result = qs / divider

И зацикливаем шаблон с:

{% for item in result %}
    {{ item.accountplan__name }}
    {{ item.amount__sum }}
{% endfor %}

Выдает ошибку неподдерживаемый тип(ы) операнда для /: 'QuerySet' и 'int' ошибка. Я понял ошибку (или, по крайней мере, так думаю), и попытался выполнить цикл в представлении следующим образом:

for result in qs:
    result / divider

Но я все еще получаю результат в виде словаря и ту же ошибку, что и выше, за исключением того, что 'dict' и 'int'.

Есть ли способ сделать это? Спасибо!

Для разделения используйте тег шаблона widthratio

# views.py

def projection(request):
    divider = int(date.today().strftime("%d"))
    qs = ManagerialRevenue.objects.values("accountplan__name").annotate(Sum("amount"))

    return render(
        request,
        "app/pages/planning/projection.html",
        context={"qs": qs, "divider": divider},
    )



# template.html

{% for item in qs %}
    {{ item.accountplan__name }}
    {{ item.amount__sum }}
    {% widthratio item.amount__sum divider 1 %}{{ item.amount__sum }}
{% endfor %}

Или вы можете даже обновить переменную qs таким образом, чтобы сохранить результат деления

views.py

def projection(request):
    divider = int(date.today().strftime("%d"))
    qs = ManagerialRevenue.objects.values("accountplan__name").annotate(Sum("amount"))
    qs_updated = [{**item, "div_result": item["amount__sum"] / divider} for item in qs]
    return render(
        request,
        "app/pages/planning/projection.html",
        context={"qs": qs_updated},
    )


# template.html

{% for item in qs %}
    {{ item.accountplan__name }}
    {{ item.amount__sum }}
    {{ item.div_result }}
{% endfor %}
Вернуться на верх