Django中Filter使用OR条件查询的问题求助
解决Django中OR条件查询的问题
嘿,我来帮你搞定这个查询问题!你之前写的status=1|0其实是Python的位或运算,计算结果是1,所以你的查询实际上等价于status=1,这就是为什么只有一个条件生效啦。
下面给你两种正确的实现方式,都能完美匹配status为0或1的产品:
方法一:使用Q对象(灵活处理复杂条件)
Q对象是Django专门用来构建复杂逻辑查询的工具,支持|(OR)、&(AND)等操作:
from django.db.models import Q # 先导入Q对象,然后用|连接两个条件 products = Products.objects.values('name', 'price').filter(Q(status=1) | Q(status=0))
方法二:使用__in查询(简洁匹配多个值)
如果只是匹配字段在某个列表里的情况,用__in会更简洁:
# 直接指定status的可选值列表 products = Products.objects.values('name', 'price').filter(status__in=[0, 1])
你可以打印products.query看看生成的SQL,两种方法都会生成正确的OR/IN条件,这样就能同时获取status为0和1的产品啦!
内容的提问来源于stack exchange,提问作者Diego Avila
相关产品推荐
相关产品推荐

