这里使用的是 rest_framework 中的filter 而不是django-filter。
from rest_framework import filters # 模糊查询
class GoodsListDetailViewSet(viewsets.ReadOnlyModelViewSet):
"""商品列表页, 详细页"""
queryset = Goods.objects.all()
serializer_class = GoodsSerializer
pagination_class = GoodsPagination
filter_backends = (DjangoFilterBackend, filters.SearchFilter) # 过滤配置
filter_class = GoodsFilter # 导入fitlters.py 中的类实现
search_fields = ('name', 'goods_brief', 'goods_desc') # 模糊搜索
ordering_fields = ('add_time', 'update_time') # 排序
其中,filter_backends = (DjangoFilterBackend, *filters.SearchFilter,filters.OrderingFilter) 中的 filter.SearchFilter 实现模糊搜索配置,OrderingFilter 实现排序
search_fields = (‘name’, ‘goods_brief’, ‘goods_desc’) # 模糊搜索
ordering_fields = (‘add_time’, ‘update_time’) # 排序
这一行配置表示 可以模糊搜索的字段。
效果如下: