Django - DJANGO- Recorrer diccionario a partir de una lista en plantilla

 
Vista:
sin imagen de perfil

DJANGO- Recorrer diccionario a partir de una lista en plantilla

Publicado por Agustin (1 intervención) el 14/07/2016 06:12:47
Hola, buenas noches.
Estoy haciendo una aplicacion la cual contiene una vista que arma dos diccionarios y una lista.
La lista, contiene objetos de tipo Persona.
Los diccionarios contienen objetos de tipo Direccion y Telefono. Donde los indices son objetos de tipo persona.
Adjunto los models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Persona(models.Model):
    nombre = models.CharField(max_length=50)
    apellido = models.CharField(max_length = 50)
    email = models.EmailField()
    localidad = models.ForeignKey(Localidad, on_delete = models.CASCADE)
    fecha_alta = models.DateTimeField()
    categoria = models.ManyToManyField(Categoria)
 
    def __str__(self):
        return self.nombre
 
 
class Direccion(models.Model):
    direccion = models.CharField(max_length=100)
    numero = models.BigIntegerField()
    piso = models.BigIntegerField()
    depto = models.CharField(max_length=5)
    persona = models.ForeignKey(Persona, on_delete = models.CASCADE)
 
    def __str__(self):
        return self.direccion
 
class Telefono(models.Model):
    codigo_area = models.BigIntegerField()
    numero = models.BigIntegerField()
    persona = models.ForeignKey(Persona, on_delete = models.CASCADE)
Al solicitar estos datos se ejecuta la siguiente funcion, que esta en views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
def listar_personal(request, cat, loc):
    telefonos = {}
    direcciones = {}
    pers = []
    pers = Persona.objects.raw('SELECT * FROM bienvenida_persona p inner join bienvenida_persona_categoria pc on p.id = pc.persona_id WHERE p.localidad_id = '+str(loc) +' and pc.categoria_id = '+str(cat))
    for i in pers:
        tel = []
        dire = []
        tel = Telefono.objects.raw('SELECT * FROM bienvenida_telefono  where persona_id ='+ str(i.id))
        dire = Direccion.objects.raw('SELECT * FROM bienvenida_direccion  where persona_id ='+ str(i.id))
        direcciones[i] = dire
        telefonos[i] = tel
    return render_to_response('personal.html', {'personas' : pers, 'direcciones' : direcciones, 'telefonos': telefonos})
Cuestion, que quiero mostrar estos datos en mi template personal.html y no lo puedo lograr. El codigo que estuve probando (junto con otros) es el siguiente.
1
2
3
4
5
6
7
<h1>Personal disponible</h1>
<h2>Listado</h2>
{% for n in personas %}
    {% for i in direcciones.n %}
        <h4>{{i.direccion}}</h4>
    {% endfor %}
{% endfor %}
Soy nuevo en django, asi que disculpen si es una ignorancia. Slds! y GRACIAS!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder