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

Смежные вопросы