2012-01-12 28 views
0

テンプレート上のテーブルに各ユーザーが取得する合計金額を表示しようとしています。今私は私のコンソールでステートメントを印刷するとき、私は正しい値を取得しますが、{{ total_dollar_amount }}をテンプレートに置くと、最後の値しか表示されません。テンプレートに正しい計算値が表示されない

今私はtotal_dollar_amountをループする必要があると思っていましたが、10進値がiterableではないというエラーがスローされます。

誰かが迷っていることを知っていますか?

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)) 

答えて

1

context変数は辞書です。各キーは1つの値しか持つことができません。 investmentsをループし、同じループに2つの同じキー(context['total_dollar_amt']context['counted'])を設定しています。つまり、各繰り返しごとに以前の値を上書きします。

あなたは、各投資のcountedtotal_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

context['total_dollar_amt']割り当てがループでヒットされるたびに上書きなっています。テンプレートに渡される値を確認するには、render_to_responseの直前にprint context['total_dollar_amt']を入力します。

私はあなたの説明から完全にはっきりしませんが、代わりにcontext['investments_data'] = []、ループ内にcontext['investments_data'].append({'inv': i, 'total_dollar_amt': total_amt})などのように、dictsのリストをコンテキストに渡す必要があると思います。次にテンプレート内:

{% for inv_data in investments_data %} 
    {{ inv_data.inv.name }} total: {{ inv_data.total_amt }} 
{% endfor %} 
関連する問題