Python 是否有方法在表的同一列中筛选多个值?
我正在建立一个网站,在那里你可以过滤饮料与许多参数,例如一个项目的名称,品牌usw。。。但我还想添加一个复选框字段,您可以在其中标记某些卷并为它们筛选我的数据库 比如说,我想按可乐的名称、品牌和体积0.7L和1L进行过滤。现在,我希望我的表格中的所有项目都显示出来,它们有可口可乐品牌可口可乐的名称,体积分别为0.7升和1升 这不起作用,因为我在一列中过滤两个不同的值,这是不可能的,因为字段“volume”不能是0.7和1Python 是否有方法在表的同一列中筛选多个值?,python,django,database,Python,Django,Database,我正在建立一个网站,在那里你可以过滤饮料与许多参数,例如一个项目的名称,品牌usw。。。但我还想添加一个复选框字段,您可以在其中标记某些卷并为它们筛选我的数据库 比如说,我想按可乐的名称、品牌和体积0.7L和1L进行过滤。现在,我希望我的表格中的所有项目都显示出来,它们有可口可乐品牌可口可乐的名称,体积分别为0.7升和1升 这不起作用,因为我在一列中过滤两个不同的值,这是不可能的,因为字段“volume”不能是0.7和1 qsf = Content.objects.all().filter(Q(
qsf = Content.objects.all().filter(Q(products__icontains=Cola) & Q(volume=0.7) & Q(volume=1) & Q(brand=Coca Cola))
我也不能使用or运算符(|),因为这样我的筛选器就无法工作
这就像我的3篇文章,因为我不知道如何解决这个问题,我真的希望你们能帮助我。你们应该能够使用
|
操作符,你们可能只需要使用括号来分组Q对象
qsf = Content.objects.all().filter(
Q(products__icontains='Cola') &
(Q(volume=0.7) | Q(volume=1)) &
Q(brand='Coca Cola')
)
除了缺少帕伦斯,我看不出你的帖子有什么问题,但也许下面的内容更好/更容易理解 使用多个
过滤器
。通常,使用Q
和|
对列中的或类型选择进行过滤,对每个过滤器的不同列进行多个.filter
和类型选择。(当然,您可以在一个.filter
操作中合并多个filter子句,在这种情况下,我认为您也可以使用.filter(volume\uu in=[0.7,1.0])
)
也许试试
qsf = Content.objects.all(
).filter( products__icontains='Cola'
).filter(
Q(volume=0.7) | Q(volume=1)
).filter( brand='Coca Cola'
)
(我对这种代码格式不太满意。也许最好关闭
.filter
并使用反斜杠继续下一行?无论如何,不相关)我使用了括号,我只是把它们忘在这里了。但它仍然不起作用,因为如果我不输入名称,只搜索卷,我会显示数据库中的所有项目。当第一个卷为none(因为没有选中0.7的复选框)时,它也不起作用,因为只有一个空字符串,我会再次显示所有项目。非常抱歉,我无法更好地解释我的问题:/。我只能说它与|操作符不起作用。