Сумма в шаблоне html с использованием тега шаблона

Я пытаюсь суммировать в HTML, но тег шаблона возвращает 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))

Шаблон :

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)

Я делаю что-то не так здесь?

не могли бы вы помочь мне, как вернуть общую сумму, используя тег шаблона здесь?


person sush    schedule 11.03.2011    source источник


Ответы (2)


Ваш тег шаблона выглядит неправильно. У вас есть 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>

person dr jimbob    schedule 11.03.2011

Я подозреваю, что ваш список является итератором. Итак, в первый раз он повторяется, а во второй раз ничего не повторяется. Итак, вы должны сделать что-то вроде этого

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

перед вызовом вашего шаблона

person Xavier Combelle    schedule 11.03.2011
comment
мне нужно добавить тег представления или шаблона? - person sush; 11.03.2011