django rest 框架中 django 过滤器后端的条件?
Conditions on django filter backend in django rest framework?
我在几个领域使用 Django 过滤器后端,效果很好。但是我想在获得特定条件时过滤字段,例如如果 user_type 是基本的获取过滤查询,否则从模型中获取所有对象。我的过滤器代码在这里:
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 休息框架和 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
override get_queryset
不会像您期望的那样工作,因为 filter_queryset
方法在 get_queryset
方法之后由框架调用,DRF get_queryset
然后通过 filter_queryset
方法。
我在几个领域使用 Django 过滤器后端,效果很好。但是我想在获得特定条件时过滤字段,例如如果 user_type 是基本的获取过滤查询,否则从模型中获取所有对象。我的过滤器代码在这里:
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 休息框架和 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
override get_queryset
不会像您期望的那样工作,因为 filter_queryset
方法在 get_queryset
方法之后由框架调用,DRF get_queryset
然后通过 filter_queryset
方法。