2011-06-16 64 views
1

我有一个朋友的模型,看起来像这样:Django的:创建一个查询集

from_user = ForeignKey(User, related_name='friends') 
to_user = ForeignKey(User, related_name='friends_') 

我有一个经理来把用户的所有友谊型号:

def for_user(self, user): 
    return self.filter(Q(to_user=user) | Q(from_user=user)) 

所以现在我会喜欢将所有用户对象作为朋友的查询集。我想写一个简单的循环,并将它们添加到列表中,但后来我失去了编写查询的能力。例如,对于用户的所有朋友,我想用特定用户名筛选/获取一个。

我的问题的标题有点泛泛,所以如果有人知道一个更好的人可以随意更改它。

回答

1
User.objects.filter(Q(friends__to_user=someuser)|Q(friends___from_user=someuser)) 

如果第二Q()将实际工作毫无头绪,但是这是你决定打电话给相关领域的内容。

+0

只是澄清一些用户必须是PK的权利? – Pickels 2011-06-16 10:07:21

+0

不,Django ORM如果是'User'就会做正确的事情。如果你有* PK,那么只需在末尾加上'_id'。 – 2011-06-16 10:14:06