Sono nuovo di Python e Django, quindi per favore sii paziente con me.Query complessa con Django (post di tutti gli amici)
Ho i seguenti modelli:
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'),)
So che questo non può essere il/modo migliore più semplice per gestire con Django, ma ho imparato in questo modo e voglio continuare in questo modo.
Ora, tutto quello che voglio fare è ottenere tutto il post da una persona e dai suoi amici. La domanda ora è come farlo con i filtri Django?
penso in SQL sarebbe simile a questa:
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)
)
senza alcuna garanzia di correttezza, tanto per dare un'idea del risultato che sto cercando.
c'è una chiave esterna dell'Utente che deve indicare Amici? – cesar09
No. Il bit "__friend" segue la relazione all'indietro, poiché 'Friend' ha un FK per' Utente'. –
Per ulteriori informazioni consultare la documentazione per [ricerche che abbracciano le relazioni] (https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships). –