如果我对您的理解正确,这应该可以:
heads = (f.head_user for f in Friendship.objects.all())
reviews = Reviews.objects.all().filter("subject_user__in"=heads)
首先,您抓住Friendship
s中的所有主要用户,然后找到他们的所有评论,这些评论似乎符合您的要求:
我想找到也在该网站上的用户的所有评论 Friendship.head_user
无法使用的原因select_related
是,它期望两个模型之间存在显式关系,而在您的情况下则没有 。在aReview
和a之间没有定义外键Friendship
,因此在这种情况下,最佳的方法可能就是我提出的方法。
但是,除非您愤怒地测试了这一点并进行了分析以确认这是系统中的关键慢点,否则我会一直听Donald Knuth的话:
我们应该忘记效率低下的问题,例如大约97%的时间:过早的优化是万恶之源。