I\'m using DRF(Django Rest Framework).
I declared a ModelViewSet, and now I want to add filters on that.
class GoodsViewSet(viewsets.ModelViewSet):
c
Finally, I found we should specify two filter_backends together:
from rest_framework.filters import SearchFilter
from django_filters.rest_framework import DjangoFilterBackend
class GoodsViewSet(viewsets.ModelViewSet):
class Filter(FilterSet):
class Meta:
model = m.Goods
filter_class = Filter
filter_backends = (SearchFilter, DjangoFilterBackend)
search_fields = ['name',]
queryset = m.Goods.objects.all()
serializer_class = s.GoodsSerializer
Or we can ignore the filter_backends field on a specific ViewSet class, but apply them globally in settings.py:
REST_FRAMEWORK = {
# ... other configurations
'DEFAULT_FILTER_BACKENDS': (
'rest_framework.filters.SearchFilter',
'django_filters.rest_framework.DjangoFilterBackend',
),
}
So that the filter_class and search_fields options are available on the ViewSet at the same time.