Nombre de atributo variable en el template de Django

Antes que nada les comento que soy muy nuevo en python y Django. Estoy en un proyecto personal y tengo esta duda.

Quiero simplificar lo siguiente en el template. (aclaro que en el ejemplo lo minimicé para mejor comprensión)
Tengo esto…

{% for nota in alumno.calificaciones.Marzo %}
    {{ nota }}
{% endfor %}

El tema es que tengo que repetir por cada mes el código (que es más complejo que el que muestro)
me gustaría hacer algo así

{% for Cambiante in ['Marzo', 'Abril',...,'Diciembre'] %}
    {% for nota in alumno.calificaciones.Cambiante %}
       {{ nota }}
    {% endfor %}
{% endfor %}

Alguna idea en como puedo hacer el “alumno.calificaciones.Cambiante” del “for”??
Desde ya agradecido.

Hola, Para hacerlo deberías usar 2 for: Saludos, Javier.

Hola, no se por que no salio el codigo en mi mensaje anterior

{% for mes in alumno.calificaciones %}
{% for nota in mes %}
    {{ nota }}
 {% endfor %}
{% endfor %}

Saludos,

Javier.

Creo que no me expliqué bien. Contextualizo mejor.
Desde la vista me llega “dato” que es un diccionario con “calificaciones” como key (que a su vez tiene cada mes como key de calificaciones).

dato ={
	'calificaciones': {
		'Marzo': ["lista de muchas cosas"], 
		'Abril': ["lista de muchas cosas"], 
		'Mayo': ["lista de muchas cosas"], 
		'Junio': ["lista de muchas cosas"], 
		'Julio': ["lista de muchas cosas"], 
		'Agosto': ["lista de muchas cosas"], 
		'Septiembre': ["lista de muchas cosas"], 
		'Octubre': ["lista de muchas cosas"], 
		'Noviembre': ["lista de muchas cosas"], 
		'Diciembre': ["lista de muchas cosas"]
		}
	}

En la plantilla tengo que acceder así

{% for nota in dato.calificaciones.Marzo %}
    {{ nota }}
{% endfor %}
#....Son 10 partes iguales, una por cada mes #
{% for nota in dato.calificaciones.Diciembre %}
    {{ nota }}
{% endfor %}

Mi problema es que los meses son keys de calificaciones.
Por lo tanto si en mi template la variable “lista_meses” tiene los meses
es decir lista_meses = [‘Marzo’, ‘Abril’,…,‘Diciembre’]

No puedo tener este código porque no me toma “mes” como variable, lo toma como si fuera una key más de calificaciones

{% for mes in lista_meses %}
 #  Acá a .mes no lo reconoce como variable de lista_meses (este es mi problema )
	{% for nota in dato.calificaciones.mes %}
		{{ nota }}
	{% endfor %}
{% endfor %}

Espero haber sido claro :slight_smile:

Hola,

Entonces es igual de facil:

{% for mes, notas in alumno.calificaciones %}
{% for nota in notas %}
    {{ nota }}
 {% endfor %}
{% endfor %}

Saludos,

Javier.

Hola Daniel, no podes hacer lo siguiente?:

{% for nota in dato.calificaciones[mes] %}
	{{ nota }}
{% endfor %}

Seria como se accede a un diccionario con la clave.

Gente, perdón por la demora, semana complicada y ahora me pude sentar a ver algo.

Amelia. No se puede acceder con corchetes, ya lo había intentado :frowning:
Me entra la duda si se puede hacer lo que quiero. No encuentro la sintaxis para esto.

Javiermarcon. El tema de los for anidados lo tengo entendido, la cuestion es que en “dato.calificaciones.mes” lo que va despues del ultimo punto lo toma como si fuera una key del diccionario y yo necesito que sea interpretado como una variable.

Hola Daniel!!

Buscando encontré este articulo que usa exec()

name = 'Elon'
exec("%s = %d" % (name,100))
print(Elon)  #output 100

Pareciera que necesitas algo como esto pero no sabría aplicarlo bien en el for.

Espero te sirva, saludos

Amelia, es justo lo que necesito pero (siempre hay un pero :joy::joy::joy:), el template de Django no corre código Python. Ahí está mi problema.

1 me gusta

Templates :expressionless: :expressionless: :expressionless: :expressionless: