带有或条件的Django rest框架过滤器 [英] Django rest framework filter with or condition

查看:102
本文介绍了带有或条件的Django rest框架过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Django Rest Framework Filter来访问我的数据。我需要获取能够回答两个条件之一的数据。示例:

I am using Django Rest Framework Filter to access my data. I need to get data that answers one of two conditions. Example:

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

|| 不起作用。有人知道我怎么做这个过滤器吗?

The || is not working. Does anyone know how I can do this filter?

推荐答案

我意识到这可能有点老了,但是我这样解决了: / p>

I realize this maybe a little old but i solved it like this:

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

这篇关于带有或条件的Django rest框架过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆