Sum in html template using template tag

4,589 views
Skip to first unread message

sushanth Reddy

unread,
Mar 11, 2011, 12:00:57 PM3/11/11
to django...@googlegroups.com
Hi ,

I am trying to sum in HTML,but template tag return 0 ,


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

Template :

    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>

Template tag:


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



output :

    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)

I am doing anything wrong here ?

can you please help me,how to return sum total using template tag here ?




Victor Harada

unread,
Mar 11, 2011, 5:26:37 PM3/11/11
to django...@googlegroups.com

Hi

You should use {{ list | running_total }}

and the filter should look like this:


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

2011/3/11 sushanth Reddy <susha...@gmail.com>




--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django...@googlegroups.com.
To unsubscribe from this group, send email to django-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

sushanth Reddy

unread,
Mar 12, 2011, 11:47:33 PM3/12/11
to django...@googlegroups.com
it worked,thanks aaa ton
Reply all
Reply to author
Forward
0 new messages