Django,列表中的 except() 函数

Saf*_*ari 0 python django list django-queryset

我有一个列表,我想从中删除另一个列表中包含的所有元素。

所以,我希望有类似“exclude查询集”的东西,但在列表中。

现在这是我的代码:

list = Friend.objects.friends(self.request.user)
i_am_blocking = User.objects.filter(blocks_received__user_blocking=self.request.user)
is_blocking_me = User.objects.filter(blocks_set__user_blocked=self.request.user)
            blocked_users = list(chain(i_am_blocking, is_blocking_me))
Run Code Online (Sandbox Code Playgroud)

现在我想从“ list”中删除“”中包含的所有项目blocked_users

有更好的方法来做这个吗?

cat*_*ran 5

您可以使用列表理解:

list = [friend for friend in list if friend.user not in blocked_users]
Run Code Online (Sandbox Code Playgroud)

更新:要在 ORM 级别执行相同的操作,您可以使用如下查询:

list = Friend.objects.friends(self.request.user) \
                     .exclude(user__in=blocked_users)
Run Code Online (Sandbox Code Playgroud)