【问题标题】:Django `filter` and `Q` query methods with ANDed conditions not working带有 ANDed 条件的 Django `filter` 和 `Q` 查询方法不起作用
【发布时间】:2018-12-17 08:09:14
【问题描述】:

我想用“and”逻辑过滤具有 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”的记录,即使名称不包含“Land”

【问题讨论】:

标签: python django filter logical-operators


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-05-16
    • 2010-11-13
    • 2010-12-27
    • 2013-04-12
    • 2014-11-23
    • 2020-10-10
    • 2018-05-22
    • 1970-01-01
    • 2018-11-14
    相关资源
    最近更新 更多