我尝试在django上创建或过滤
这是我的小例子:
products=Products.objects.values('name', 'price').all().filter(status=1|0)
问题是不要验证两个选项(1 | 0) 不打印错误(products.query)只验证一个选项不是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),
)