Шаблон не показывает правильные рассчитанные значения - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь отобразить общую сумму, которую каждый пользователь получил бы в таблице в моем шаблоне.Теперь, когда я делаю операторы print в моей консоли, я получаю правильные значения, но затем, когда я добавляю {{ total_dollar_amount }} в свой шаблон, он показывает только последнее значение.

Теперь я подумал, что мне нужно пройти через total_dollar_amount, но затем выдает ошибку о том, что десятичное значение не повторяется.

Кто-нибудь знает, что мне не хватает?

views.py

def ABD_report(request, *args, **kwargs):
"""
This report will show all 'In Trust For' investments in the system and display all relevant information
"""
from investments.models import Investment
from reports.forms import InTrustForm
context = {}
if request.POST:
    form = InTrustForm(request.agents, request.POST)
    if form.is_valid():
        agents = form.cleaned_data['agents']
        context['selected_agents'] = agents
        investments = Investment.objects.filter(plan__profile__agent__in=agents, plan__ownership_type__code = "itf")
        for i in investments:
            #count all members in each plan
            count = i.plan.planmember_set.all().count()
            #take off the primary member of the account
            count -= 1
            if i.interestoption:
                if i.interestoption.short_label == 'AN':
                    pay_amt = i.pay_amount
                    total_amt = (pay_amt / count)
                    context['total_dollar_amt'] = total_amt
            context['counted'] = count
        context['investments'] = investments
        context['show_report'] = True
else:
    form = InTrustForm(request.agents)

context['form'] = form

return render_to_response('reports/admin/abd_report.html', RequestContext(request, context))

Ответы [ 2 ]

1 голос
/ 13 января 2012

Переменная context является словарем;каждый ключ может иметь только одно значение.Вы перебираете investments и устанавливаете те же самые два ключа, context['total_dollar_amt'] и context['counted'], в каждом цикле - поэтому на каждой итерации вы перезаписываете предыдущее значение.

Если вы хотите иметь возможностьЗацикливаясь на значениях counted и total_dollar_amt для каждой инвестиции, вам нужно прикрепить это к объекту инвестиций, а не устанавливать ключ в context:

for i in investments:
    #count all members in each plan
    count = i.plan.planmember_set.all().count()
    #take off the primary member of the account
    count -= 1
    if i.interestoption:
        if i.interestoption.short_label == 'AN':
            pay_amt = i.pay_amount
            total_amt = (pay_amt / count)
            # attach value to the investment
            i.total_dollar_amt = total_amt
    # attach value to the investment
    i.counted = count

Теперь в вашем шаблоне вы можетецикл через investments.

1 голос
/ 13 января 2012

context['total_dollar_amt'] перезаписывается каждый раз, когда задание попадает в цикл. Чтобы увидеть значение, которое будет передано в шаблон, выполните print context['total_dollar_amt'] непосредственно перед render_to_response.

Из вашего описания мне не совсем понятно, но я думаю, что вместо этого вам нужно передать список диктов в контекст - например, context['investments_data'] = [], затем в цикле, context['investments_data'].append({'inv': i, 'total_dollar_amt': total_amt}) или аналогичный. Тогда в шаблоне:

{% for inv_data in investments_data %}
    {{ inv_data.inv.name }} total: {{ inv_data.total_amt }}
{% endfor %}
...