2016-10-18 31 views
1

我有一个相当简单的视图,其中如果未选择任何过滤器,我希望api调用不返回任何内容。目前,基本的api url会返回所有内容,并且过滤器成功地限制了返回,这是我想要的一半。Django Rest Framework - 如果未选择过滤器,则不返回值

所以这将返回值:

http://localhost:8000/api/v1/widgets/?name=abc&list=def

这将不返回任何结果:

http://localhost:8000/api/v1/widgets/

这是我目前的看法:

class WidgetViewSet(EncryptedLookupGenericViewSet, 
         viewsets.ModelViewSet, 
        ): 
    queryset = Widget.objects.all() 
    serializer_class = WidgetSerializer 
    permission_classes=[IsAuthenticated, ] 
    lookup_field = 'id' 
    filter_class = WidgetFilter 

    def get_queryset(self): 
     return super(WidgetViewSet, self).get_queryset().filter(list__owner=self.request.user) 

回答

1

你可以检查是否request.GET为空

def get_queryset(self): 
    if self.request.GET: 
     return super(WidgetViewSet, self).get_queryset().filter(list__owner=self.request.user) 
    else: 
     return self.queryset.none() 
+0

作品像魅力谢谢你! – whoisearth

相关问题