2009-10-10 44 views
3
class Friendship(models.Model): 
    from_friend = models.ForeignKey(User, related_name='friend_set') 
    to_friend = models.ForeignKey(User, related_name='to_friend_set') 

我想选择具有from_friend =某个用户的所有to_friends。如何做嵌套的Django SELECT?

然后,我想将to_friends传递给另一个.objects.filter()中的filter内部。这是做到这一点的方式吗?

谢谢!

回答

2

由于pccardune说,你会得到相关用户是这样的:

friendships = Friendship.objects.filter(from_friend=some_user) 

但事实上,你可以直接通过这个到你的下一个查询:

second_select = Whatever.objects.filter(friend__in=friendships) 
3

我想SELECT所有to_friendsfrom_friend =某个用户。

你可以得到所有的这一步,像这样的友谊对象:

friendships = Friendship.objects.filter(from_friend=some_user) 

然后你就可以使用查询集的values_list方法得到的所有to_friend领域成平面列表

friends = friendships.values_list("to_friend", flat=True) 

此时friends是一个ValuesListQuery对象,其工作方式与列表类似。您可以迭代朋友并使用其他filter()调用中的值。

+0

有没有其他的选择? – TIMEX 2009-10-10 23:37:37

2

这似乎返回了预期结果

User.objects.filter(to_friend_set__from_friend=1)