2016-05-31 61 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))