Django rest_framework同时定义模糊搜索字段一起搜索
DRF 中的 SearchFilter 过滤器提供了一个简单的搜索查询参数,它可以在视图中的查询集中执行基本的文本搜索。默认情况下,它使用 "icontains" 操作符执行不区分大小写的模糊匹配。
要在 DRF 视图中使用 SearchFilter 过滤器,需要将其添加到 filter_backends 列表中,并在 search_fields 属性中指定要搜索的字段列表。以下是一个示例:
from rest_framework import generics, filters from myapp.models import MyModel from myapp.serializers import MyModelSerializer class MyModelListView(generics.ListAPIView): queryset = MyModel.objects.all() serializer_class = MyModelSerializer filter_backends = [filters.SearchFilter] search_fields = ['name', 'description']
在上面的示例中,MyModelListView 继承自 DRF 的 ListAPIView,使用 SearchFilter 过滤器和 name 和 description 字段作为搜索字段。要执行搜索操作,请向视图的 URL 中添加查询参数 search,如下所示:
http://localhost:8000/mymodels/?search=query
在上面的 URL 中,将 query 替换为要搜索的文本。执行搜索操作后,SearchFilter 过滤器将使用 "icontains" 操作符对指定字段中包含搜索文本的结果进行过滤,并返回过滤后的结果集。
相关文章