2014-08-30 48 views
0

如何根據url過濾對象? 我跟着此documentation並將其返回404基於url中的視圖集Rest框架對象過濾器

的網址

router.register(r'api/main/search/$', restviews.SearchResult) 

class SearchResult(viewsets.ReadOnlyModelViewSet): 
    model = Listing 

    def list(self, request): 
     if request.QUERY_PARAMS == 'GET' and request.QUERY_PARAMS.get('sec') == '1': 
      key = request.GET.get('keyword') 
      queryset = Listing.objects.filter(service__name__contains=key,).distinct() 
      serializer = ListingSerializer(queryset, many=True) 
      return Response(serializer.data) 
     else: 
      content = {'Error': 'nothing to see here'} 
      return Response(content, status=status.HTTP_404_NOT_FOUND) 

視圖的邏輯是從所拍攝的該串行

class ListingSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Listing 
     fields = ('name', 'categories', 'service', 'desc') 

視圖基本模型視圖正常工作。所以,我認爲這不是查詢問題,更可能是導致問題的其他問題。

回答

0

你似乎在這裏做出錯誤的比較: if request.QUERY_PARAMS == 'GET'

應該 if request.method == 'GET'

從您發佈的鏈接: you'll normally need to provide at least the queryset and serializer_class attributes.

還有,如果你看一下部分關於過濾的文檔 - see here - 您會看到,建議您在get_queryset方法中進行過濾。更確切地說,您應該使用關於Filtering against query parameters的部分。

相關問題