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

Django跨多应用查询同外键关联的多列数据

关联多模型的Django查询实现

这是某问题的后续提问。

模型定义

app1/models.py

class A(models.Model):
    id = models.IntegerField(primary_key=True)
    text = models.CharField(max_length=20)

class B(models.Model):
    fid = models.ForeignKey(A, models.CASCADE)
    text = models.CharField(max_length=20)

class C(models.Model):
    fid = models.ForeignKey(A, models.CASCADE)
    text = models.CharField(max_length=20)

app2/models.py

from app1.models import A

class D(models.Model):
    fid = models.ForeignKey(A, models.CASCADE)
    text = models.CharField(max_length=20)

查询需求

我需要获取满足A.id == B.fid == C.fid == D.fid == 1条件的A.text、B.text、C.text、D.text数据。参考之前的实现,我可以通过以下查询获取前三个字段:

B.objects.filter(fid=1).values('text', 'fid__text', 'fid__c__text') # B.text, A.text, C.text

但无法通过该查询获取D.text。我知道可以单独过滤D后手动拼接结果,但希望找到**更符合Django风格(Djangoic)**的实现方式。

另外要求:若存在多条匹配数据,需生成笛卡尔积结果。例如,若B有2条匹配数据,C有3条,D有4条,应返回总计24条数据。


致后续访客:weAreStarsDust和nigel222的回答均十分优质,值得一读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:51:53