python - examples - Plantillas Django Primer elemento de una lista
template web django (3)
Le paso un diccionario a mi plantilla Django,
Diccionario y plantilla es así -
lists[listid] = {''name'': l.listname, ''docs'': l.userdocs.order_by(''-id'')}
{% for k, v in lists.items %}
<ul><li>Count: {{ v.docs.count }}, First: {{ v.docs|first }}</li></ul>
{% endfor %}
Ahora docs
es una lista de tipo userdocs
. Es decir, es una instancia. Así que el first
filtro me devuelve esta instancia. De esto necesito extraer su id
. ¿Cómo puedo hacer eso?
{{ v.docs|first }}.id
y varios otros ensayos inútiles.
No sé si esto es útil ...
Lo que desea es el primer valor de un iterable (v.docs) y está iterando sobre otro encapsulado iterable (listas).
Para el recuento, haría lo mismo, pero para el primer elemento ... iteraría sobre v.docs individualmente y recuperaría el primer valor a través de un bucle interno.
{% for doc in v.docs %}
{% if v.docs | first %}
<li>doc</li>
{% endif %}
{% endfor %}
Nota: el primer filtro se aplica a v.docs, no a doc. Sí. Se trata de otro bucle :(
Puede usar el {% with %}
templatetag para este tipo de cosas.
{% with v.docs|first as first_doc %}{{ first_doc.id }}{% endwith %}
Puedes probar esto:
{{ v.docs.0 }}
Como arr.0
Puede obtener elementos por índice ( 0
, 1
, 2
, etc.).