2009-10-09 7 views
13

J'ai un dictionnairePrésenter les données du dictionnaire python au modèle django.

data = {'sok': [ [1, 10] ], 'sao': [ [1, 10] ],'sok&sao':[ [2,20]] } 

Comment puis-je (Dictionnaire de boucle creux) présente mes données sous forme de tableau (HTML) pour modèle Django. ?? Ce format que le tableau

author  qty   Amount 
sok   1    10   
sao   1    10   
sok&sao  2    20 
total    

Répondre

37

Vous pouvez utiliser la méthode dict.items() pour obtenir les éléments du dictionnaire:

<table> 
    <tr> 
     <td>author</td> 
     <td>qty</td> 
     <td>Amount</td> 
    </tr> 

    {% for author, values in data.items %} 
    <tr> 
     <td>{{author}}</td> 
     {% for v in values.0 %} 
     <td>{{v}}</td> 
     {% endfor %} 
    </tr> 
    {% endfor %} 
</table> 
+0

valeurs [0] ne fonctionne pas – kn3l

+2

values.0 ...... –

+1

Edité en réponse pour la postérité. –

6

Malheureusement, les modèles de django ne traitent pas avec Python tuples. Il n'est donc pas légal d'utiliser "pour auteur, valeurs" dans le modèle. Au lieu de cela, vous devez accéder aux valeurs du tuple ou du tableau par leur index en utilisant ".index", comme dans "tuple.0" et "tuple.1".

<table> 
    <tr> 
     <td>author</td> 
     <td>qty</td> 
     <td>Amount</td> 
    </tr> 

    {% for entry in data.items %} 
    <tr> 
     <td>{{entry.0}}</td> 
     {% for v in entry.1 %} 
     <td>{{v}}</td> 
     {% endfor %} 
    </tr> 
    {% endfor %} 
</table> 
4

Dans un projet im travaillant maintenant, j'ai eu le même problème, grâce à vos réponses que j'ai fini par faire quelque chose comme ça et il a bien fonctionné:

<table border=1 cellpadding=1 cellspacing=1> 
<tr> 
    <td>author</td> 
    <td>qty</td> 
    <td>Amount</td> 
</tr> 
{% for k,v in resultado.iteritems %} 
    <tr><td> {{ k }} </td><td>{{ v[0] }}</td><td> {{ v[1] }} </td></tr> 
{% endfor %} 
</table> 
Questions connexes