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

如何在Django ORM中用filter实现含AND、OR组合的SQL查询

实现对应SQL的Django ORM查询

要实现你给出的SQL查询逻辑,需要用到Django ORM的Q对象来处理复杂的OR和AND组合条件,具体实现如下:

  1. 首先导入Q对象:
from django.db.models import Q
  1. 假设你的Django模型类名为SampleTable(对应数据库表sample_table),使用filter方法构造查询:
SampleTable.objects.filter(
    istatus=1,
    Q(iCategory=2, iType=1) | Q(iType__in=[2, 3, 5])
)

逻辑说明

  • istatus=1 对应SQL中的istatus = 1,多个filter参数默认是AND关系;
  • Q(iCategory=2, iType=1) 对应iCategory = 2 AND iType=1;
  • Q(iType__in=[2,3,5]) 对应iType IN (2,3,5);
  • | 符号表示OR逻辑,括号的优先级和SQL一致,确保先计算OR内部的组合,再和外部的istatus=1做AND运算。

你也可以用全Q对象的写法,逻辑完全等价:

SampleTable.objects.filter(
    Q(istatus=1) & (Q(iCategory=2) & Q(iType=1) | Q(iType__in=[2, 3, 5]))
)

内容的提问来源于stack exchange,提问作者padmaja cherukuri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 13:12:04