Python ve Django'ya yeni yaşıyorum, lütfen bana sabırlı olun.Django ile karmaşık sorgulama (tüm arkadaşlardan gelen mesajlar)
Aşağıdaki modelleri var: Bu Django ile üstesinden en iyi/en kolay yolu olmayabilir biliyoruz
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'),)
ama bu şekilde öğrendim ve böyle kalmasını istiyorum.
Şimdi, tüm yapmak istediğim kişi bir kişiden tüm mesajları al ve arkadaşları. Şimdi soru, Django filtreleriyle nasıl yapılacağıdır?
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)
)
doğruluğu hiçbir garantisi ile, sadece aradığım sonucu hakkında bir fikir vermek için:
Ben böyle bir şey olmazdı SQL düşünüyorum.
Kullanıcının işaret etmesi gereken Kullanıcıdan yabancı bir anahtar var mı? – cesar09
Hayır. "Arkadaş" ın "Kullanıcı" için FK olduğu için "__friend" biti, ilişkiyi geriye doğru takip eder. –
Daha fazla bilgi için [ilişkileri kapsayan aramalar] için belgelere bakın (https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships). –