加入我的人,其中有一個外鍵User
:左外Django的
p = Personne.objects.get(user=self.request.user)
此人有「朋友」,通過那裏的一個src
的人,一個dst
人模型PersonneRelation
,所以我「M檢索所有的人的朋友是這樣的:
friends = [a.dst.pk for a in PersonneRelation.objects.filter(src=p)]
我有嵌入了一個旅遊的描述模型Travel
。我還有一個模型「活動」,這是朋友當前用戶已完成的活動(Activite
)。因此,這裏是我檢索所有與當前用戶的活動方式:
context['activites'] = Activite.objects.filter(
Q(travel__personne__pk__in=friends) | Q(relation__src__pk__in=friends),
)
,一切工作正常。我還有一個型號爲PersonneLiked
的地方,如果你喜歡Activite
,你可以精確到。因此這個模型有一個外鍵Activite
。
class PersonneLiked(models.Model):
src = models.ForeignKey('Personne', related_name='liked_src')
dst = models.ForeignKey('Personne', related_name='liked_dst')
activite = models.ForeignKey('Activite', related_name='liked_activite')
# liked = thumb added *OR* removed :
liked = models.BooleanField(default=True)
什麼代碼我應該做檢索所有context['activites']
的PersonneLiked
?這就像在SQL中創建一個OUTER JOIN
,但我不知道如何用Django做到這一點。
爲什麼這個子句'Q(relation__src__pk__in = friends)',爲什麼PersonneLiked也有src和dst?這種關係不是保存在一個地方嗎? –