多对多 - return 只有来自对称关系的对象

Many-to-many - return only objects from symmetrical relationship

我在 models.py 中有以下代码:

class Relationship(models.Model):
    from_person = models.ForeignKey(User, on_delete=models.CASCADE, related_name="from_person")
    to_person = models.ForeignKey(User, on_delete=models.CASCADE, related_name="to_person")

并且这个字段在User模型中定义:
friends = models.ManyToManyField('self', blank=True, symmetrical=False, through='Relationship')

我想要的是当我稍后在视图中执行时 request.user.friends.all() 到 return 只有与登录用户具有对称关系的用户,因为当我这样做时:
Relationship.objects.filter(from_person__in=request.user.friends.all(), to_person=request.user)
它 returns Relationship 当然是对象,但我想像上面的命令那样拥有 User 对象。

问题是如何实现?我想我必须制作自定义 m2m 管理器并以某种方式修改 get_queryset() 方法。

我终于用这个命令解决了它:
User.objects.filter(from_person__from_person__in=request.user.friends.all(), from_person__to_person=request.user)