Django休息框架过滤器或条件

时间:2016-05-31 08:11:33

标签: django django-rest-framework

我正在使用Django Rest Framework Filter来访问我的数据。我需要获得满足两个条件之一的数据。例如:

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

||无效。有谁知道我怎么做这个过滤器?

1 个答案:

答案 0 :(得分:1)

我意识到这可能有点旧,但我解决了这个问题:

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))