Python 如何使用两个参数排除django中的查询集
我对django的看法如下:Python 如何使用两个参数排除django中的查询集,python,django,django-rest-framework,Python,Django,Django Rest Framework,我对django的看法如下: class ExploreListingView(generics.ListAPIView): serializer_class = ListingSerializer permission_classes = [permissions.IsAuthenticated] def get_queryset(self): return Listing.objects.exclude(user=self.request.user,
class ExploreListingView(generics.ListAPIView):
serializer_class = ListingSerializer
permission_classes = [permissions.IsAuthenticated]
def get_queryset(self):
return Listing.objects.exclude(user=self.request.user, claimed=True)
我期望的结果是过滤掉所有分配给当前用户并被声明的列表,但是过滤器不起作用,但是当我删除任何一个参数时,它都可以正常工作。如何排除它,以便可以使用多个参数。事实证明,我所要做的就是链接排除方法,
列出.objects.exclude(user=self.request.user)。exclude(claid=True)
选择字段user等于self.request.user且声明为True的条目
您可以使用:
Listing.objects.filter(user=self.request.user).exclude(claimed=True)
两种方式都可以,但第一种方式是明确的代码。由“AND(&)”操作员:
from django.db.models import Q
Listing.objects.filter(Q(user=self.request.user) & Q(claimed=True))
这里排除
列表
s,因为列表是用户的,并且声明=True
(因此,如果两个条件都适用)。我有两个条件都适用的列表,但它们仍然可以在查询集中看到。
from django.db.models import Q
Listing.objects.filter(Q(user=self.request.user) & Q(claimed=True))