我已经启用了我的API订单,它运行得很好。我的问题是它只允许我按字段值排序。我希望能够进行像
这样的查询GET /api/some_endpoint/?crazy_query=123
然后,即使模型没有字段crazy_field
,我希望能够以某种方式响应它。我只是不知道从哪里做到这一点。 OrderingFilter
目前通过设置DEFAULT_FILTER_BACKENDS
注入我的所有视图集。我想我必须创建一个自定义过滤器后端,但我不确定如何去做它
答案 0 :(得分:2)
您可以随意添加自定义过滤器后端类。例如。在
restframework_filters / CrazyBackend.py:
class CrazyBackend(filters.BaseFilterBackend):
"""
My crazy filter.
"""
def filter_queryset(self, request, queryset, view):
crazy = request.query_params.get('crazy_query', None)
if crazy:
queryset = queryset.filter(...something crazy...)
return queryset
然后将其添加到设置中:
REST_FRAMEWORK = {
...
'DEFAULT_FILTER_BACKENDS': (
'restframework_filters.CrazyBackend', ...
),
不要忘记新文件夹中的空__init__.py。