Django休息框架自定义排序字段

时间:2015-09-28 07:06:14

标签: django django-rest-framework

我已经启用了我的API订单,它运行得很好。我的问题是它只允许我按字段值排序。我希望能够进行像

这样的查询
GET /api/some_endpoint/?crazy_query=123

然后,即使模型没有字段crazy_field,我希望能够以某种方式响应它。我只是不知道从哪里做到这一点。 OrderingFilter目前通过设置DEFAULT_FILTER_BACKENDS注入我的所有视图集。我想我必须创建一个自定义过滤器后端,但我不确定如何去做它

1 个答案:

答案 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。

相关问题