我有一个简单的多对多关系,基于整个班级。
class Person(models.Model):
friends = models.ManyToManyField('self', through='Friendship')
class Friendship(models.Model):
me = models.ForeignKey(Person)
them = models.ForeignKey(Person)
confirmed = models.BooleanField(default=False)
简而言之,这应该允许某人将其他人添加为朋友,但在其他人确认之前该链接不存在。很简单。
我想向is_friend(self, user)
添加Person
方法。我想做的事情是:
is_friend(self, user):
return self.friends.filter(them=user, confirmed=True).count()
但是filter
似乎只对遥远的班级(在这种情况下是Person
)进行操作。在使用Friendship
时,我是否可以在ManyRelatedManager
上过滤?
答案 0 :(得分:2)
我有点生疏,但你试过return Friendship.objects.filter(me=self, them=user, confirmed=True)
吗?
答案 1 :(得分:1)
你试过了吗?
is_friend(self, user):
return self.friends.filter(friendship__them=user, friendship__confirmed=True).count()