1

我有一个基于直通类的简单多对多关系。

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吗?

4

2 回答 2

2

我有点生疏,但你试过return Friendship.objects.filter(me=self, them=user, confirmed=True)吗?

于 2010-10-15T16:10:12.457 回答
1

你有没有尝试过:

is_friend(self, user):
    return self.friends.filter(friendship__them=user, friendship__confirmed=True).count()
于 2010-10-15T17:02:20.310 回答