【发布时间】:2018-04-06 14:14:04
【问题描述】:
我有三个表,名字A、B、C:
class A(models.Model):
name = models.CharField(max_length=12)
class B(models.Model):
name = models.CharField(max_length=12)
a = models.ForeignKey(to=A)
class C(models.Model):
name = models.CharField(max_length=12)
email = models.EmailField()
b = models.ForeignKey(to=B)
我想得到以下数据:
[
{"name":"a1",
"data":[{
"name":"b1",
"data":[
{"name":"c1",
"data":{"c1_name":"c1_name", "c1_id":"c1_id"}
},
{"name":"c2",
"data":{"c2_name":"c2_name", "c2_id":"c2_id"}
}
]
},
{
"name":"b2",
"data":[
{"name":"c1",
"data":{"c1_name":"c1_name", "c1_id":"c1_id"}
},
{"name":"c2",
"data":{"c2_name":"c2_name", "c2_id":"c2_id"}
}
]
}
]
}
]
你看,有三级数据,如果只有表A和B,我可以多表连接查询:
B.objects.filter(a='search_id')
但是现在有三个表,并且您看到表C的电子邮件不包含在查询数据中。
如何在我的场景中实现这一要求?
【问题讨论】:
-
@BrianH。我的方案是三级连接,你的是两级。
-
您可以使用外键作为属性并添加另一个
__