使用自定义过滤器参数ElasticSearch DRF

时间:2019-11-21 13:11:57

标签: elasticsearch django-rest-framework

我正在使用带有django_elasticsearch_dsl库的DRF的ElasticSearch。 我想将一个过滤器参数替换为多个参数。例如:

/search/user/?for_message=true

成为:

/search/user/?is_available=true&id__in=1__2__3

我试图重写Filter_queryset函数,但是在FilteringFilterBackend类复制request.query_params上使用get_filter_query_params函数,所以我无法访问它。

这是我尝试的方式:


    def filter_queryset(self, queryset):
        if 'for_message' in self.request.query_params.keys():
            mutated = self.request.query_params.copy()
            mutated.pop('for_message')
            mutated['is_available'] = 'true'
            mutated['id__in'] = "__".join(
                [str(x) for x in list(MyModel.objects.filter(user=self.request.user).values_list('pk', flat=True))])
            self._request.GET = mutated

        return super().filter_queryset(queryset)


0 个答案:

没有答案