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

如何使用Django ORM构造FROM子句中的嵌套查询?

Django ORM构造嵌套查询方案

可以用Django ORM构造你需要的这类嵌套查询,以下是两种实用方案:

方式一:利用Subquery和OuterRef(Django 1.11及以上版本支持)

先定义子查询的数据集,再基于这个子查询做外层查询。假设你的模型为TableModel,对应数据库中的table_name表,r1是模型的字段:

from django.db.models import Subquery
from yourapp.models import TableModel

# 构造子查询:获取r1字段的所有数据
sub_query = TableModel.objects.values('r1')
# 外层查询基于子查询结果,这里返回r1字段数据
result = TableModel.objects.filter(pk__in=Subquery(sub_query)).values('r1')

这段代码生成的SQL会呈现嵌套结构,和你给出的查询逻辑一致。

方式二:使用RawSQL执行原生嵌套查询

如果需要完全匹配你给出的SQL结构,可以直接用原生SQL语句:

from yourapp.models import TableModel

# 直接执行原生嵌套查询
result = TableModel.objects.raw('SELECT * FROM (SELECT r1 FROM table_name) temp')

这种方式直接复用你提供的SQL语句,适合对原生SQL熟悉的场景,但要注意防范SQL注入风险,不要直接拼接用户可控的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:30:55