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

Django中如何实现嵌套过滤(Filter of Filter/Query of Query)

Django嵌套过滤实现方案

首先先修正你模型里的拼写错误:ForeingKey应该写成ForeignKey,不然会报语法错误。

针对你的需求,有两种简洁的实现方式:

方法一:基于已查询的Person集合过滤Detail

你之前的错误在于x是Person对象的QuerySet集合,不是单个id,所以不能用=匹配,需要用__in来指定“属于某个集合”的条件:

def test(request, id_user):
    # 先筛选出指定user的Person记录
    x = Person.objects.filter(user_id=id_user)
    # 筛选person_id属于x中记录id的Detail数据
    y = Detail.objects.filter(person__in=x)
    # 或者等价写法:用person_id__in配合values_list取id集合
    # y = Detail.objects.filter(person_id__in=x.values_list('id', flat=True))

方法二:一步到位的关联过滤(更高效)

Django支持跨外键的链式过滤,不需要先查询Person,直接通过Detail的外键关联到Person的user_id,一次查询完成:

def test(request, id_user):
    y = Detail.objects.filter(person__user_id=id_user)

这种方式只需要一次数据库查询,比先查Person再查Detail的两次查询更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:12:01