30👍
✅
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.
4👍
this worked for me:
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter
——–views.py—————————–
filter_backends = (filters.DjangoFilterBackend, SearchFilter ,OrderingFilter)
filter_fields =('completed',)
ordering =('-date_created',)
search_fields =('task_name',)
- Django Models Number Field
- Select Children of an Object With ForeignKey in Django?
- Convert Python None to JavaScript null
- How can I filter Emoji characters from my input so I can save in MySQL <5.5?
- How to specify which eth interface Django test server should listen on?
Source:stackexchange.com