Django REST Framework-过滤器(二)

2023-04-25 09:04:02 浏览数 (1)

范围过滤器(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过滤器后端,并指定要搜索的字段。这将允许我们根据特定搜索词来获取数据。

0 人点赞