我在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()
中执行以仅返回与登录用户具有对称关系的用户时,因为当我这样做时:
Relationship.objects.filter(from_person__in=request.user.friends.all(), to_person=request.user)
它当然返回Relationship
个对象,但我希望在它上面的命令中有User
个。
问题是如何实现这一目标?我想我必须自定义m2m管理器并以某种方式修改get_queryset()
方法。
答案 0 :(得分:0)
我终于用这个命令解决了它:
User.objects.filter(from_person__from_person__in=request.user.friends.all(), from_person__to_person=request.user)