How to make a query Inner Join in Django

0

I have the following models:

class perfil(models.Model):
    usuario = models.OneToOneField(User, on_delete=models.CASCADE)
    carrera = models.TextField()
    promocion = models.TextField()
    telefono = models.TextField(max_length=11)
    fecha_nacimiento = models.DateField()
    imagen = models.ImageField(null=True)
    area = models.ManyToManyField(area_conocimiento)

class publicacion(models.Model):
    usuario = models.ForeignKey(User, editable=True, related_name='publicacion', on_delete=models.CASCADE)
    canal = models.ForeignKey(canal, editable=True, related_name='canal', on_delete=models.CASCADE)
    contenido = models.TextField()
    imagen = models.ImageField(null=True)
    fecha = models.DateTimeField(auto_now_add=True)
    tipo = models.TextField()

I need to show all posts made by users whose promotion is equal to that of a certain user (in this case 56), the following query works for me without problems in the database:

SELECT redsocial_publicacion.usuario_id, redsocial_publicacion.contenido, redsocial_publicacion.canal
FROM redsocial_perfil, redsocial_publicacion, auth_user
WHERE redsocial_publicacion.canal = 'promo'
AND redsocial_publicacion.usuario_id = redsocial_perfil.usuario_id
AND redsocial_perfil.promocion = '56'
AND redsocial_publicacion.usuario_id = auth_user.id

Try doing the following in Django but without result:

publicaciones_promo =  publicacion.objects.filter(tipo="publico",canal='promo', perfil__promocion=promo_usuario)
    
asked by Carlos 20.02.2017 в 21:13
source

0 answers