Una consulta, como puedo hacer inner join con Django?

2,750 views
Skip to first unread message

Ader Joel Vasquez Villalobos

unread,
Jan 13, 2013, 7:24:13 PM1/13/13
to pytho...@googlegroups.com
Una consulta, como puedo hacer inner join con Django?

Estos son mis models:
class Mensaje(models.Model):
Emisor = models.ForeignKey(User)
Asunto = models.CharField(max_length = 100)
Mensaje = models.TextField(verbose_name = 'Mensaje',help_text = 'Redacta el mensaje')
Fecha = models.DateTimeField(auto_now = True)


class Alumno(User):
Codigo = models.CharField("Código",max_length = 7,unique = True)
Apellidos= models.CharField(max_length = 30)
Nombres = models.CharField(max_length = 30)

class Destinatarios(models.Model):
Mensaje = models.ForeignKey(Mensaje)
Receptor = models.ForeignKey(User)
Estado = models.BooleanField("No leido",default=True)


QUIERO VER LOS MENSAJES DEL USUARIO QUE SE  LOGEA, OSA  MIS MENSAJES NUEVOS, COMO MIS MENSAJES ENVIADOS. Gracias.

Javier Olaechea

unread,
Jan 13, 2013, 8:09:39 PM1/13/13
to pytho...@googlegroups.com
Bueno si mal no recuerdo sería Mensaje.objects.filter(emisor=request.user) para los enviados por el usuario y para los enviados al usuario sería Mensaje.objects.filter(destinatarios__mensaje__emisor=request.user)

Y para tener los dos en un queryset sería cuestión de uniros con || =>

mensajes = Mensaje.objects.filter(emisor=request.user) || Mensaje.objects.filter(destinatarios__mensaje__emisor=request.user)

puedes ver más acá: https://docs.djangoproject.com/en/dev/topics/db/queries/

P.D. creo que sería bueno que sigas la convención de sólo usar mayúsuculas para las clases y las variables de instancia en minúsculas, espacio después de coma, etc (el resto del pep8)

Saludos


2013/1/13 Ader Joel Vasquez Villalobos <vasqu...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "Python Perú" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/python-peru/-/HWMgE5D5q-AJ.
Para publicar una entrada en este grupo, envía un correo electrónico a pytho...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a python-peru...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/python-peru?hl=es.



--
"I object to doing things that computers can do." — Olin Shivers

Nicolas Valcárcel Scerpella

unread,
Jan 14, 2013, 3:41:27 PM1/14/13
to pytho...@googlegroups.com
Puedes escribir managers:
https://docs.djangoproject.com/en/dev/topics/db/managers/#using-managers-for-related-object-access
> --
> Has recibido este mensaje porque estás suscrito al grupo "Python Perú" de Grupos de Google.
> Para ver este debate en la Web, visita https://groups.google.com/d/msg/python-peru/-/HWMgE5D5q-AJ.
> Para publicar una entrada en este grupo, envía un correo electrónico a pytho...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a python-peru...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/python-peru?hl=es.
>

--
Nicolas Valcárcel
Gerente IT / CTO
Celular: +51 976 330 707
Key fingerprint = 5C4D 0C85 D9C0 98FE 11F9 DD12 524E C3CD EF58 4970
gpg --keyserver keyserver.ubuntu.com --recv-keys 654597FE
Reply all
Reply to author
Forward
0 new messages