Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/08/2012, 21:30
Avatar de cristian_cena
cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 6 meses
Puntos: 269
Django: ¿como consultar modelos ManyToMany?

Hola, antes que nada aclarar que tengo por fin aprender a manejar las consultas a modelos de django.
Practiqué con relaciones OneToOne y ForeignKey sin problemas pero no se como trabajar los casos ManyToMany ya que no se como consultar
la tercer tabla de unión.

Al grano, tengo un listado de noticias en el cual quiero imprimir todos los tags de cada noticia. Los modelos:

Código Python:
Ver original
  1. #models.py
  2.  
  3. class Noticia(models.Model):
  4.     titulo= models.CharField(max_length=30)
  5.     tags = models.ManyToManyField(Tag)
  6.  
  7. class Tag(models.Model):
  8.     nombre = models.CharField(max_length=30)
Luego consulto los modelos en la función de vista pasando al template todas las noticias y todos los tags por separado:
Código Python:
Ver original
  1. #views.py
  2.  
  3. def inicio(request):
  4.     noticias = Noticia.objects.all()
  5.     tags = Tag.objects.all()
  6.     return render_to_response('inicio.html', {'noticias':noticias, 'tags':tags}, context_instance(request))
finalmente listo las noticias y dentro de cada una ... todos los tags
inicio.html

Código HTML:
Ver original
  1. {% for noticia in noticias%}
  2.     {{noticia.titulo}}
  3.     {% for tag in tags %}
  4.         {{tag.nombre}}
  5.     {% endfor %}
  6. {% endfor %}

Como cabe esperar se listan todos los tags y no solo los relacionados a cada noticia en particular.
Pues no se como acceder a la tercer tabla de la relación muchos a muchos 'noticia_tags: id, noticia_id, tag_id'

¿Tengo acceso a la tabla de unión o es preferible elaborar la consulta en la función de vista?
Desde ya muchas gracias