Soy nuevo en Python y Django, así que tenga paciencia conmigo.Consulta compleja con Django (publicaciones de todos los amigos)
I tienen los siguientes modelos:
class User(models.Model):
name = models.CharField(max_length = 50)
...
class Post(models.Model):
userBy = models.ForeignKey(User, related_name='post_user')
userWall = models.ForeignKey(User, related_name='receive_user')
timestamp = models.DateTimeField()
post = models.TextField()
class Friend(models.Model):
user1 = models.ForeignKey(User, related_name='request_user')
user2 = models.ForeignKey(User, related_name='accept_user')
isApproved = models.BooleanField()
class Meta:
unique_together = (('user1', 'user2'),)
Sé que esto puede no ser la mejor/manera más fácil de manejar con Django, pero he aprendido de esta manera y quiero mantenerlo así.
Ahora, todo lo que quiero hacer es obtener toda la publicación de una persona y sus amigos. La pregunta ahora es ¿cómo hacerlo con los filtros de Django?
creo en SQL se vería algo como esto:
SELECT p.* FORM Post p, Friend f
WHERE p.userBy=THEUSER OR (
(f.user1=THEUSER AND f.user2=p.userBy) OR
(f.user2=THEUSER AND f.user1=p.userBy)
)
sin ninguna garantía de exactitud, sólo para dar una idea del resultado que estoy buscando.
¿hay una clave externa del usuario que tiene que apuntar a amigos? – cesar09
No. El bit "__friend" sigue la relación al revés, ya que 'Friend' tiene un FK para' User'. –
Para obtener más información, consulte la documentación de [consultas que abarcan las relaciones] (https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships). –