Reputation: 569
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
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
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