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

Django ORM中如何实现OR查询?SQL转ORM写法求助

Django ORM实现OR条件的解决方案

嘿,我来帮你搞定这个OR条件的问题!Django的filter方法默认用逗号分隔的查询条件是AND关系,要实现SQL里的OR逻辑,咱们得用到Django ORM提供的Q对象。

步骤1:导入Q对象

首先要先从Django的模型模块里导入Q:

from django.db.models import Q

步骤2:改写你的查询语句

把原来的代码改成用Q对象加|符号(代表OR)来连接条件:

offer_list = offer.objects.filter(Q(country_id=1) | Q(mundial=1))

这个写法完全等价于你给出的SQL语句:

SELECT * FROM offer WHERE country_id = 1 OR mundial = 1;

额外实用技巧

  • 多OR条件拼接:如果需要多个OR逻辑,继续用|连接即可:
    offer_list = offer.objects.filter(Q(country_id=1) | Q(mundial=1) | Q(status='available'))
    
  • 混合AND与OR:要是需要组合AND和OR逻辑(比如(A OR B) AND C),可以把OR条件用括号包裹,再跟AND条件用逗号分隔:
    offer_list = offer.objects.filter((Q(country_id=1) | Q(mundial=1)), is_published=True)
    
  • NOT逻辑:用~符号可以实现NOT条件,比如排除country_id=2的记录:
    offer_list = offer.objects.filter(~Q(country_id=2))
    

小提醒:尽量别用list作为变量名哦,这是Python的内置类型,容易引发不必要的错误,换成offer_list这类更具语义的名字会更规范~

内容的提问来源于stack exchange,提问作者Sergio Mendez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:58:38