【发布时间】:2016-02-11 12:03:21
【问题描述】:
我有一个人,他有一个指向User的外键:
p = Personne.objects.get(user=self.request.user)
这个人通过模型PersonneRelation 有“朋友”,其中有一个src 人和一个dst 人,所以我正在检索这个人的所有朋友:
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?关系不是保存在一个地方吗?
标签: django django-models