Skip to content

Filtering {drf}

DRF에서 필터링은 generic view Class의 get_queryset 메서드를 오버라이드 하는 것으로 충분히 달성할 수 있다.

Filtering Against Query Parameters#

get_queryset 메서드를 오버라이드 하여 쿼리셋에 request.query_params 를 가져와 원하는 필터링을 수행할 수 있다. 예제 코드는 공식문서에서 가져왔다:

class PurchaseList(generics.ListAPIView):
    serializer_class = PurchaseSerializer

    def get_queryset(self):
        """
        Optionally restricts the returned purchases to a given user,
        by filtering against a `username` query parameter in the URL.
        """
        queryset = Purchase.objects.all()
        username = self.request.query_params.get('username')
        if username is not None:
            queryset = queryset.filter(purchaser__username=username)
        return queryset