Django rest_framework同时定义模糊搜索字段一起搜索

2023-03-13 00:00:00 django rest

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" 操作符对指定字段中包含搜索文本的结果进行过滤,并返回过滤后的结果集。

相关文章