2011-03-11 34 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