【发布时间】:2020-12-02 05:56:32
【问题描述】:
我正在使用 djangorestframework 和 mysql 数据库。 我有一个基于搜索查询参数返回列表的视图。 我正在使用 rest_frameworks.filters SearchFilter 进行基于搜索的过滤。 这是我的看法:
from rest_framework import filters
from rest_framework.generics import ListAPIView
...
class FooListView(ListAPIView):
serializer_class = SymbolSerializer
queryset = Symbol.objects.all()
filter_backends = [filters.SearchFilter]
search_fields = ['field_A', 'field_B', 'field_C']
要调用的示例 URL 是:
http://localhost:8000/symbols/symbols/?search=bird
现在一切正常,但我需要一个 filters.SearchFilter 不支持的功能。 我希望我的搜索按 search_fields 的优先级排序。
例如这里有两条记录:
foo1 : {"field_A": "any", "field_B": "many", "field_C": "bar", "id": 3}
foo2 : {"field_A": "many", "field_B": "any", "field_C": "bar", "id": 4}
现在,当我使用 search='many' 参数进行搜索时,我希望视图返回一个列表,其中 foo2 记录高于 foo1(如 [foo2, foo1] ),因为我希望搜索的优先级是 field_A score 但它只返回一个按 id ([foo1, foo2]) 排序的列表。
有什么帮助吗?
【问题讨论】:
标签: mysql django django-rest-framework django-filter django-rest-framework-filters