Django contador en bucle a la lista de índice

Estoy pasando dos listas a una plantilla. Normalmente, si estuviera iterando sobre una lista, haría algo como esto

{% for i in list %} 

pero tengo dos listas a las que necesito acceder en paralelo, es decir. el enésimo elemento en una lista corresponde al enésimo elemento en la otra lista. Mi idea era pasar por encima de una lista y acceder a un elemento en la otra lista usando forloop.counter0, pero no puedo entender la syntax para que funcione.

Gracias

Usted no puede La forma simple es preprocesar sus datos en una lista comprimida , como esta

En su opinión

 x = [1, 2, 3] y = [4, 5, 6] zipped = zip(x, y) 

Luego en tu plantilla:

 {% for x, y in zipped %} {{ x }} - {{ y }} {% endfor %} 

Para acceder a un iterable usando un contador forloop, he codificado el siguiente filtro muy simple:

 from django import template register = template.Library() @register.filter def index(sequence, position): return sequence[position] 

Y luego puedo usarlo en mis plantillas como (no olvides cargarlo):

 {% for item in iterable1 %} {{ iterable2|index:forloop.counter0 }} {% endfor %} 

¡Espero que esto ayude a alguien más!

Acabé por tener que hacer esto:

 {% for x in x_list %} {% for y in y_list %} {% if forloop.counter == forloop.parentloop.counter %} Do Something {% endif %} {% endfor %} {% endfor %} 

Parece que estás buscando mi django-multiforloop . Desde el README:

Renderizando esta plantilla

 {% load multifor %} {% for x in x_list; y in y_list %} {{ x }}:{{ y }} {% endfor %} 

con este contexto

 context = { "x_list": ('one', 1, 'carrot'), "y_list": ('two', 2, 'orange') } 

dará salida

 one:two 1:2 carrot:orange 

No creas que podrás hacerlo así. Necesitará una etiqueta de plantilla, o mucho mejor, para alinear las listas en su lógica de vista, antes de pasar una estructura de datos alineada a su plantilla.