2016-10-18 56 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

相關問題