搜索
# 1. 搜索定义和实现
# 1.1 搜索定义
我们每次在搜索的服务的时候,都是以 http://127.0.0.1:8000/api/game.json?search=QQ ,而且搜索的字段都是我们自己定义好的,后面的搜索 字段必须以 search 定义,不能是其他字段,那这个我们如何在DRF中去实现呐。
# 1.2、实现
说明:其实分两步走,导入搜索的过滤器,然后定义搜索的 字段,搜索的条件就在这几个条件中去查找
from .custom_model_view_set import CustomModelViewSet
from django_filters.rest_framework import DjangoFilterBackend
from .custom_filter import GameFilter
from rest_framework import filters
class GameView(CustomModelViewSet):
queryset = Game.objects.all()
serializer_class = GameSerializer
filter_backends = (DjangoFilterBackend, filters.SearchFilter) # 导入filters.SearchFilter 过滤器
# 过滤
# filter_fields = ('name', 'status')
filterset_class = GameFilter
# 搜索字段
search_fields = ("name", "status")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1.3、postman测试结果
搜索:http://127.0.0.1:8000/api/game/?search=QQ
搜索status,因为我在 搜索的定义的字段有status:http://127.0.0.1:8000/api/game/?search=1
编辑 (opens new window)