2011-03-11 4 views
2

J'essaie de résumer en HTML, mais le retour de l'étiquette de modèle 0,Somme dans le modèle HTML en utilisant balise template

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

Modèle:

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> 

tag Modèle:

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) 

sortie:

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) 

Je fais quelque chose de mal ici?

pouvez-vous s'il vous plaît m'aider, comment retourner la somme totale en utilisant l'étiquette de modèle ici?

Répondre

7

Votre balise de modèle semble erroné. Vous avez role_total comme paramètre, puis parcourez list_total (apparemment indéfini) et à partir de chaque dictionnaire de la liste essayez d'obtenir la clé list_sum qui est également apparemment non définie.

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) 

et de l'appeler à partir du modèle à comme <td>{{ list|running_total}}</td>

2

Je suppose que votre liste est un itérateur. Donc, la première fois, ça se répète et la deuxième fois, ça ne se répète pas. Alors vous devriez faire quelque chose comme ça

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

avant d'appeler votre modèle

+0

je dois ajouter dans la vue ou étiquette de modèle? – sush

Questions connexes