Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有方法在表的同一列中筛选多个值?_Python_Django_Database - Fatal编程技术网

Python 是否有方法在表的同一列中筛选多个值?

Python 是否有方法在表的同一列中筛选多个值?,python,django,database,Python,Django,Database,我正在建立一个网站,在那里你可以过滤饮料与许多参数,例如一个项目的名称,品牌usw。。。但我还想添加一个复选框字段,您可以在其中标记某些卷并为它们筛选我的数据库 比如说,我想按可乐的名称、品牌和体积0.7L和1L进行过滤。现在,我希望我的表格中的所有项目都显示出来,它们有可口可乐品牌可口可乐的名称,体积分别为0.7升和1升 这不起作用,因为我在一列中过滤两个不同的值,这是不可能的,因为字段“volume”不能是0.7和1 qsf = Content.objects.all().filter(Q(

我正在建立一个网站,在那里你可以过滤饮料与许多参数,例如一个项目的名称,品牌usw。。。但我还想添加一个复选框字段,您可以在其中标记某些卷并为它们筛选我的数据库

比如说,我想按可乐的名称、品牌和体积0.7L和1L进行过滤。现在,我希望我的表格中的所有项目都显示出来,它们有可口可乐品牌可口可乐的名称,体积分别为0.7升和1升

这不起作用,因为我在一列中过滤两个不同的值,这是不可能的,因为字段“volume”不能是0.7和1

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的复选框)时,它也不起作用,因为只有一个空字符串,我会再次显示所有项目。非常抱歉,我无法更好地解释我的问题:/。我只能说它与|操作符不起作用。