如何从django中的所有用户中排除用户的查询集?

时间:2017-07-28 15:58:17

标签: python django-models django-rest-framework

我正在使用DRF开发一个django rest api,在我的一个视图中,我覆盖了get_queryset函数:

class UserSearchListView(generics.ListAPIView):

    ...

    def get_queryset(self):
        current_user_friends = Friend.objects.friends(self.request.user)
        all_users = User.objects.all()
        # from the all_users queryset I need to remove the current_user_friends queryset.
        # Should the exclude function be used?

all_users查询集我需要排除发出请求的用户和current_user_friends查询集中包含的用户的朋友。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

类似的东西:

all_users = [1,2,3,4]
current_user_friends = [1,2]
print list(set(all_users)-set(current_user_friends))
print [user for user in all_users if user not in current_user_friends]
print filter(lambda user: user not in current_user_friends, all_users)

答案 1 :(得分:0)

您可以利用QuerySets的values_list和.exclude()方法来实现您的目标:

pass by reference

要排除发出请求的用户,您可以从请求对象中检索它,或者在请求中传递标识值以将其检索并将其包含在单独的.exclude()中。