import collections
data = [
{'firstname': 'John', 'lastname': 'Smith'},
{'firstname': 'Samantha', 'lastname': 'Smith'},
{'firstname': 'shawn', 'lastname': 'Spencer'},
]
new_data = collections.defaultdict(list)
for d in data:
new_data[d['lastname']].append(d['firstname'])
print new_data
Aquí está la salida:plantillas de Django no puede bucle defaultdict
defaultdict(<type 'list'>, {'Smith': ['John', 'Samantha'], 'Spencer': ['shawn']})
y aquí está la plantilla:
{% for lastname, firstname in data.items %}
<h1> {{ lastname }} </h1>
<p> {{ firstname|join:", " }} </p>
{% endfor %}
Pero el bucle en mi plantilla no funciona. Nada aparece. Ni siquiera me da un error. ¿Cómo puedo arreglar esto? Se supone que debe mostrar el apellido junto con el primer nombre, algo como esto:
<h1> Smith </h1>
<p> John, Samantha </p>
<h1> Spencer </h1>
<p> shawn </p>
No ha mostrado el código que coloca el diccionario en el contexto de la plantilla. ¿Estás seguro de que está sucediendo correctamente? –
Sí, todo lo demás se representa correctamente fuera del ciclo. – user216171