具有ANDed条件的Django`filter`和`Q`查询方法不起作用

时间:2018-12-17 08:09:14

标签: python django filter logical-operators

我想使用“和”逻辑过滤具有2个条件的模型。我也尝试过使用链式过滤器和Q方法,但未获得期望的结果。它作为“或”逻辑工作。请帮忙。

我尝试过:

Products.objects.order_by('Name').values('Name', 'UPC', 'ProductPrice', 'SubDeptNumber', 'CategoryNumber', 'FirstCompPrice', 'SecondCompPrice', 'ThirdCompPrice').filter(Name_icontains="Land", UPC_contains="15")

p = Products.objects.order_by('Name').values('Name', 'UPC', 'ProductPrice', 'SubDeptNumber', 'CategoryNumber', 'FirstCompPrice', 'SecondCompPrice', 'ThirdCompPrice').filter(Name_icontains="Land")

result = p.filter(UPC_contains="15")

我得到的结果显示了UPC包含“ 15”的所有记录,即使名称中不包含“土地”

1 个答案:

答案 0 :(得分:1)

您只需要将两个条件作为关键字参数传递到同一过滤器上,因为它们将是ANDed by default

Entry.objects.filter(
    headline__startswith='What',
    pub_date__gte=datetime.date.today()
)