范围过滤器(RangeFilter)
范围过滤器允许您根据一个范围值来过滤API数据。它通常用于获取一个特定范围内的对象或一组对象。在Django REST Framework中,可以使用django_filters.rest_framework.filters.RangeFilter类来实现范围过滤器。
以下是一个使用范围过滤器的示例:
代码语言:javascript复制from django_filters import rest_framework as filters
from rest_framework import generics
from myapp.models import MyModel
from myapp.serializers import MyModelSerializer
class MyModelList(generics.ListAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
filter_backends = [filters.DjangoFilterBackend]
filterset_fields = {
'field1': ['gte', 'lte'],
'field2': ['gt', 'lt'],
}
}
在上面的示例中,我们使用DjangoFilterBackend过滤器后端,并指定了要过滤的字段及其范围值。这将允许我们根据字段1的值来获取值大于等于和小于等于范围内的数据,并根据字段2的值来获取值大于和小于范围内的数据。
搜索过滤器(SearchFilter)
搜索过滤器允许您根据一个或多个搜索词来过滤API数据。它通常用于获取包含特定搜索词的对象或一组对象。在Django REST Framework中,可以使用rest_framework.filters.SearchFilter类来实现搜索过滤器。
以下是一个使用搜索过滤器的示例:
代码语言:javascript复制from rest_framework import generics
from rest_framework.filters import SearchFilter
from myapp.models import MyModel
from myapp.serializers import MyModelSerializer
class MyModelList(generics.ListAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
filter_backends = [SearchFilter]
search_fields = ['field1', 'field2', 'field3']
}
在上面的示例中,我们使用SearchFilter过滤器后端,并指定要搜索的字段。这将允许我们根据特定搜索词来获取数据。