Foros del Web » Programando para Internet » Python »

Consulta a tabla con camo ManyToManyField en el Modelo

Estas en el tema de Consulta a tabla con camo ManyToManyField en el Modelo en el foro de Python en Foros del Web. hola, de nuevo por aca. Les planteo mi problema Tengo dos modelos creados, @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Python: Ver original class Opciones ( models. Model ) ...
  #1 (permalink)  
Antiguo 14/09/2011, 06:11
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 8 meses
Puntos: 16
Pregunta Consulta a tabla con camo ManyToManyField en el Modelo

hola, de nuevo por aca. Les planteo mi problema

Tengo dos modelos creados,
Código Python:
Ver original
  1. class Opciones(models.Model):
  2.  
  3.     nombreOpcion=models.CharField(max_length= 200, verbose_name=u'Item')
  4.  
  5.     direccion = models.CharField(max_length=300, verbose_name=u'Dirección')
  6.  
  7.  
  8. class OpcionesGrupos(models.Model):
  9.  
  10.     grupo = models.ForeignKey(Group,verbose_name=u'Grupo')
  11.  
  12.     opcion = models.ManyToManyField('Opciones', verbose_name=u'Opción')
Explico. Mi idea es hacer un menú dinamico. En opciones tengo todas las opciones existentes del menu y la direccion a la que dirigen. en "OpcionesGrupos" tengo la relación del grupo de usuarios (el cual me traigo de los grupos de usuarios propios de django) y las opciones del menu que cada grupo puede ver. Como sabrán django al uno poner ese campo "manyToManyField" crea una tercera tabla en la bd. que es la que guarda la relación muchos a muchos. Pero esta tabla uno no tiene acceso desde el modelo. Es alli en donde tengo el problema, porq mi idea es que al usuario conectarse, se verifique esa tabla y le muestre todas las opciones que el grupo al que el usuario pertenece puede ver......
Entoncs alguién tiene idea como puedo yo, por medio de las consultas de django traerme esos campos???? porque al consultar "opcionesGrupos.object.all()" solo me trae los nombres de los grupos, y no las opciones que tienen.


Muchas Gracias por anticipado.
  #2 (permalink)  
Antiguo 14/09/2011, 08:17
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consulta a tabla con camo ManyToManyField en el Modelo

Primero que nada, en la segunda clase, en la definición del ManyToMany, has puesto Opciones entre comillas. No sé si es así en tu código o lo has puesto así al escribirlo aquí.

Segundo, en cada objeto del QuerySet devuelto por opcionesGrupos.object.all(), podés llamar al objeto opcion:

Código Python:
Ver original
  1. for obj in opcionesGrupos.object.all():
  2.     print obj.opcion.all()


Saludos.
  #3 (permalink)  
Antiguo 14/09/2011, 09:04
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Consulta a tabla con camo ManyToManyField en el Modelo

AlvaroG puedes pasarle la clase o el nombre de la clase como string. Esto en caso que no tengas definido con anterioridad la clase.
  #4 (permalink)  
Antiguo 14/09/2011, 09:15
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 8 meses
Puntos: 16
Respuesta: Consulta a tabla con camo ManyToManyField en el Modelo

Esta entre comillas porque es un modelo definido por mi. y si, eso me funciono muchas Gracias. Solo una duda más. Si deseo acceder al campo direccion que se encuentra en la tabla opcion. desde alli es posible???? gracias.
  #5 (permalink)  
Antiguo 14/09/2011, 10:12
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consulta a tabla con camo ManyToManyField en el Modelo

Cita:
Iniciado por razpeitia Ver Mensaje
AlvaroG puedes pasarle la clase o el nombre de la clase como string.
No lo sabía

Cita:
Iniciado por rjulio21 Ver Mensaje
Si deseo acceder al campo direccion que se encuentra en la tabla opcion. desde alli es posible???? gracias.
opcion.all() te devuelve un QuerySet, en donde cada elemento es un objeto de clase Opciones. De allí simplemente lo trabajás como cualquier otro QuerySet:
Código Python:
Ver original
  1. for o in opcion.all():
  2.     print o.direccion


Saludos.
  #6 (permalink)  
Antiguo 15/09/2011, 08:29
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 8 meses
Puntos: 16
Respuesta: Consulta a tabla con camo ManyToManyField en el Modelo

ok AlvaroG. Muchas gracias por tu ayuda. era lo que necesitaba.

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:55.