You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django中筛选记录时如何给单个列名传入多个值

Django多值模糊筛选解决方案

要筛选品牌包含apple、dell、hp任意一个的笔记本记录,由于__icontains不支持直接传入多个值,你需要用Django的Q()对象构建OR逻辑查询,具体实现如下:

步骤1:导入Q对象

from django.db.models import Q

步骤2:构建查询条件并筛选

简洁写法(固定值)

filtered_laptops = laptops.objects.filter(
    Q(brand__icontains="apple") | Q(brand__icontains="dell") | Q(brand__icontains="hp")
)

灵活写法(支持动态列表)

如果需要从动态列表中获取筛选值,可以用循环构建条件:

brands_to_search = ["apple", "dell", "hp"]
q_condition = Q()
for brand in brands_to_search:
    q_condition |= Q(brand__icontains=brand)

filtered_laptops = laptops.objects.filter(q_condition)

补充说明

  • Q()对象用于构建复杂逻辑查询,|表示OR关系,&表示AND关系
  • 若需求是精确匹配多个品牌,可直接用brand__in=["apple", "dell", "hp"],但模糊匹配(__icontains)必须通过OR组合多个条件实现

内容的提问来源于stack exchange,提问作者Fahad Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:36:34