2017-11-08 7 views
0

아주 잘 작동하는 몇 가지 필드에서 장고 필터 백엔드를 사용하고 있습니다. 하지만 특정 조건을 얻을 때 필자는 필드를 필터링하고 싶습니다. 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 

나는 나머지 프레임 워크를 장고 및 필터 백엔드 장고에 새로운 오전. 누군가가이 일을 시도하면 나를 도와주세요.

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_queryset이 예상대로 작동하지 않습니다, filter_queryset 방법은 get_queryset 방법 후 프레임 워크에 의해 호출되기 때문에, DRF get_queryset 다음 filter_queryset 방법으로 그것을 필터링 :

답변

1

이 당신이 필요합니다.

+0

감사합니다. 모든 것이 매력처럼 작동합니다. –