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
相关产品推荐
相关产品推荐

