2011-03-11 71 views
2

我想在HTML總結,但模板標籤返回0,總和HTML模板使用模板標籤

View.py

def gen_Report(request): 

### query returns below output 
list=[{'total': 1744, 'user': u'x'}, {'total': 13, 'user': u'y'}, {'total': 126, 'user': u'z'}, {'total': 46, 'user': u'm'}, {'total': 4, 'user': u'n'}, {'total': 8, 'user': u'o'}, {'total': 3, 'user': u'p'}] 

return render_to_response('user.html', locals(), 
          context_instance = RequestContext(request)) 

模板:

user.html 

    {% load temptags %} 

<table id="myTable" class="tablesorter"> 
    <thead> 
    <tr> 

    <th>S.No</th> 
    <th>role</th> 
    <th>Count</th> 

    </tr> 
    </thead> 
    {% for fetch in list %} 

    <tr> 
    <td>{{forloop.counter}}</td> 
    <td>{{fetch.user}}</td> 
    <td>{{fetch.total}}</td> 



    {% endfor %} 
    <td>{{ list.total|running_total}}</td> 
    <tr> 

    </table> 

模板標籤:

from django.template import Library 
register = Library() 
@register.filter 
def running_total(list_total): 
    return sum(d.get('list_sum') for d in list_total) 

輸出:

S.No user   Count 
1  x  1744 
2  y   13 
3  z   126 
4  m   46 
5  n    4 
6  o   8 
Sum------------------> 0 (it returns zero) 

我在這裏做錯了什麼?

你能幫我一下,如何在這裏用模板標籤返回總和?

回答

7

你的模板標籤看起來錯了。您有role_total作爲參數,然後遍歷list_total(看似未定義)並從列表中的每個字典中嘗試獲取密鑰list_sum,該密鑰也似乎未定義。

from django.template import Library 
register = Library() 
@register.filter 
def running_total(your_dict_list): 
    return sum(d['total'] for d in your_dict_list) 

,並從模板調用它在爲<td>{{ list|running_total}}</td>

2

我懷疑你的列表是一個迭代器。所以它第一次迭代,第二次迭代沒有結果。 所以,你應該做這樣的事情

for d in list_total: 
    d.set('list_sum', list(d.get('list_sum'))) 

調用模板

+0

我需要在視圖或模板標記添加? – sush 2011-03-11 16:52:44