Python django rest框架中django筛选器后端的条件?

Python django rest框架中django筛选器后端的条件?,python,django,rest,django-rest-framework,django-filter,Python,Django,Rest,Django Rest Framework,Django Filter,我在少数几个领域使用Django过滤器后端,效果非常好。但当我得到特定的条件时,我想过滤字段,比如用户类型是基本的获取过滤查询,否则从模型中获取所有对象。我的过滤器代码如下: http_method_names = ['get'] serializer_class = SearchSerializer pagination_class = LargeResultsSetPagination filter_backends = (DjangoFilterBackend,) filter_fie

我在少数几个领域使用Django过滤器后端,效果非常好。但当我得到特定的条件时,我想过滤字段,比如用户类型是基本的获取过滤查询,否则从模型中获取所有对象。我的过滤器代码如下:

http_method_names = ['get']
serializer_class = SearchSerializer
pagination_class = LargeResultsSetPagination


filter_backends = (DjangoFilterBackend,)
filter_fields = ('property_zipcode', 'property_state', 'property_county',)
我需要的是:

def get_queryset(self):
    if self.request.query_params.get('basic',None):
       filter_backends = (DjangoFilterBackend,)
       filter_fields = ('property_zipcode', 'property_state', 'property_county',)
       return filtered_query # I want to return filter query from here.

    queryset = property.objects.all();
    return queryset
我是Django rest框架和Django过滤器后端的新手。如果有人想做这件事,请帮助我。

这就是你需要的:

class YourClass(ModelViewSet):
    serializer_class = SearchSerializer
    pagination_class = LargeResultsSetPagination
    filter_backends = (DjangoFilterBackend,)
    filter_fields = ('property_zipcode', 'property_state', 'property_county',)

    def filter_queryset(self, queryset):
        if self.request.query_params.get('basic',None):
            queryset = super(YourClass,self).filter_queryset(self.get_queryset())
        else:
            queryset=self.get_queryset()
        return queryset
覆盖
get\u queryset
不会像您期望的那样工作,因为
filter\u queryset
方法是在
get\u queryset
方法之后由框架调用的,DRF
get\u queryset
然后通过
filter\u queryset
方法对其进行过滤