过滤器Django上的OR出错

时间:2018-05-11 17:43:27

标签: django filter orm

我尝试在django上创建或过滤

这是我的小例子:

products=Products.objects.values('name', 'price').all().filter(status=1|0)

问题是不要验证两个选项(1 | 0) 不打印错误(products.query)只验证一个选项不是2个选项.. !!

请谢谢!!

2 个答案:

答案 0 :(得分:1)

要在django中使用 OR 进行过滤,您需要一个名为Q的特殊类。 Documentation about Complex lookups with Q objects

from django.db.models import Q

products = Products.objects.values('name', 'price').filter(Q(status=1) | Q(status=0))

答案 1 :(得分:1)

使用Q对象

是件好事
manager.filter(Q(status=1) | Q(status=0))

您需要知道经理上的方法all()才会委托给get_queryset()。 要使用filter(),您已经拥有QuerySet

而不是all()调用 queryset ,然后调用查询集的filter, 只需manager.filter()

all().filter()变为filter(),因为它是多余的

它是:

from django.db.models import Q

products = Product.objects.values('name','price').filter(
                 Q(status=1) | Q(status=0),
           )