通过自定义过滤器DRF中的两个不同字段过滤查询

时间:2020-03-18 10:39:53

标签: python-3.x filter django-rest-framework

我想知道您是否有解决方案,可以通过两个或多个不同模型字段以“自由文本”格式给出的一个查询进行过滤

class WitnessFilter(BaseFilterBackend):
    def filter_queryset(self, request, queryset, view):
        new_queryset = queryset
        if view.action == 'list':
            serializer = WitnessFilterSerializer(data=request.query_params)
            serializer.is_valid(raise_exception=True)
            data = serializer.validated_data
            language = data.get('language')
            city = data.get('city')
            free_text = data.get('free_text') # <<<<<<<<<<<<

            if free_text:
                new_queryset = new_queryset.filter(Q(first_name__icontains=free_text) |
                                                   Q(last_name__icontains=free_text))

当某人传递“ somefirstname somelastname”时,将找不到任何东西。它只能按名字或姓氏工作。

谢谢!

0 个答案:

没有答案