Estoy tratando de iterar sobre un diccionario de valores de modelo en una plantilla de Django. Deseo enumerar el nombre detallado de cada campo de modelo junto con su valor.¿Qué pasa aquí? Iteración sobre un diccionario en la plantilla de Django
Esto es lo que tengo en models.py:
class Manors(models.Model):
structidx = models.IntegerField(primary_key=True, verbose_name="ID")
county = models.CharField(max_length=5, null=True, blank=True, verbose_name="County")
def get_fields(self):
d = {}
#d["database"] = "pubs"
#d["uid"] = "sa"
for field in Manors._meta.fields:
d[field.verbose_name(self)] = field.value_to_string(self)
return d
Y en views.py:
manor_stats = Manors.objects.get(structidx__exact=id)
return render_to_response('template.html', { 'place' : place, 'manor_stats' : manor_stats }, context_instance = RequestContext(request))
Y en la plantilla:
<h4>Statistics</h4>
<ul>
{% for key, value in manor_stats.get_fields %}
<li> {{ key }}: {{ value }} </li>
{% endfor %}
</ul>
Pero acabo de obtener una lista extraña, de aspecto distorsionado como:
u: i
d: a
Ni siquiera funciona si utilizo valores codificados en models.py (como se ha comentado anteriormente).
¿Qué pasa aquí? Estado tratando de resolver esto por horas :(
---------- --------------- ACTUALIZADO
Tratando con
def get_fields(self):
d = {}
for field in Manors._meta.fields:
d[field.verbose_name(self)] = { "verbose": field.verbose_name(self), "value": field.value_to_string(self) }
return d
y en la plantilla:
<h4>Statistics</h4>
<ul>
{% for key, value in manor_stats.get_fields %}
<li> {{ key }}: {{ value }}</li>
{% endfor %}
</ul>
solo produce una lista en blanco ....
I no tengo palabras para usted, señor.: * – vanguard69