2016-05-31 33 views
2

我正在使用Django Rest框架過濾器來訪問我的數據。我需要獲取滿足以下兩個條件之一的數據。例如:Django其他框架過濾條件或條件

Mywebsite/api/animal/?name=lion||name=frog 

||不起作用。有誰知道我該怎麼做這個過濾器?

+0

帖子你的錯誤日誌。 – Lee

+0

Â沒有錯誤日誌..它只是不重複任何結果。它不假定返回結果,因爲它不是正確的方法。我的問題是什麼是寫這種請求的方式 – ron

+0

這是你正在使用的一個:[DRF Filters](https://github.com/philipn/django-rest-framework-filters)?如果是這樣,請發佈您定義的FilterSet。 – C14L

回答

0

我意識到這也許有點老了,但我解決了這個問題是這樣的:

from django.db.models import Q 


class FooViewSet(viewsets.ModelViewSet): 
    queryset = Foo.objects.all() 
    status = self.request.query_params.get('status', None) 

    def get_queryset(self): 
     if status is not None: 
      status = status.split('|') 
      query = Q() 
      for x in status: 
       q = Q(status=x) 
       query |= q 
      queryset = queryset.filter(query) 
     return queryset 

然後我的網址是這樣的:

example.com/api/foo/?status=test1|test2|test3 

和過濾器這樣

Foo.objects.filter(Q(status=test1)|Q(status=test2)|Q(status=test3))