12735961238
12735961238

Reputation: 569

How do you filter one field using multiple values in ListAPIView in Django REST framework?

How do you filter one field using multiple values in ListAPIView in Django REST framework?

URL: /api/items/?status=active&status=pending

I need to get results that have either "active" or pending "status". What filter_backends will be good for my case?

Upvotes: 3

Views: 665

Answers (2)

ROHIT RAJ
ROHIT RAJ

Reputation: 196

You can use the django-filter package's DjangoFilterBackend for that:

from django_filters import DjangoFilterBackend

class profile_view(generics.ListAPIView):
    queryset = ModelName.objects.all()
    serializer_class = SerializerName
    filter_backends = [DjangoFilterBackend]
    filter_fields = {
        'status': ["in", "exact"] # icontains ,exact, gte, lte, in
         # if you want to add more fields, you can
    }

then you can filter data by ?status__in=active, pending or status=active.

Upvotes: 3

kamilyrb
kamilyrb

Reputation: 2627

Yes, you can use DjangoDefaultFilterBackend like that:

from django_filters import DjangoFilterBackend
class YourListAPI(generics.ListAPIView):
    queryset = YourModel.objects.all()
    serializer_class = YourSerializer
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['status']

You can find more detail abouth drf-filtering

If you want to use filter multiple values for same field , there is a good answer here

Upvotes: 0

Related Questions