2009-09-25 8 views
63

Bastante simple. Tengo una lista de Python que paso a una plantilla de Django.Django Templating: cómo acceder a las propiedades del primer elemento en una lista

que puede intervenir con precisión en el primer elemento de esta lista utilizando

{{ thelist|first }} 

Sin embargo, también quieren acceder a una propiedad de ese tema ... Lo ideal sería que se podría pensar que se vería así:

{{ thelist|first.propertyName }} 

Pero, por desgracia, no es así.

¿Hay alguna solución a esta plantilla, o estoy sólo va a encontrar a mí mismo pasar una variable de plantilla adicional ...

Respuesta

129

Puede acceder a cualquier elemento de una lista a través de su número de índice. En una plantilla este funciona igual que cualquier otra propiedad de búsqueda:

{{ thelist.0.propertyName }} 
+0

Hmm. esto no funciona con un inline_admin_formset sin embargo. Supongo que el iterador no funciona como lo espero. – Shayne

+0

Hola Daniel, ¿podrías consultar mi pregunta relacionada con la plantilla/vista http://stackoverflow.com/questions/34791375/how-to-use-render-to-response-to-render-a-html-page-within- div-en-django? – Sathish

+0

Esto es mucho mejor que un ciclo 'for' para revisar cada uno de los mensajes de error. ¡Gracias! – IIllIIll

25

Puede combinar la etiqueta with plantilla con el filtro first plantilla para acceder a la propiedad.

{% with thelist|first as first_object %} 
    {{ first_object.propertyname }} 
{% endwith %} 
+0

Para un diccionario, primero devuelve una tupla para el par clave/valor, es un poco feo, pero agregué otro con la declaración para obtener solo los valores. {% with thelist | first as first_object%} {% with first_object.1 as object%} {{object}} {% endwith%} {% endwith%} –

14

Si está intentando acceder a un campo de muchos a muchos, recuerde agregar all, por lo que se verá como object.m2m_field.all.0.item_property

Cuestiones relacionadas