【发布时间】:2020-06-01 23:49:06
【问题描述】:
我有 3 个模型通过外键连接到一个:
class A(models.Model):
name = models.CharField(max_length=20)
class B(models.Model):
a = models.ForeignKey(A, on_delete=models.CASCADE)
amount_b = models.FloatField()
class C(models.Model):
a = models.ForeignKey(A, on_delete=models.CASCADE)
amount_c = models.FloatField()
class D(models.Model):
a = models.ForeignKey(A, on_delete=models.CASCADE)
amount_d = models.FloatField()
我想使用 Django ORM 根据外键进行 JOIN 查询,以获取每个金额的总和。
在 SQL 中,我会做类似的事情:
SELECT
a.name,
b_sum,
c_sum,
d_sum
FROM A AS a
LEFT JOIN (SELECT b.a, sum(amount_b) as b_sum
from B as b
group by b.a) as AB AB.a = a.id
LEFT JOIN (SELECT c.a, sum(amount_c) as c_sum
from C as c
group by a) AS AC ON AC.a = a.id
LEFT JOIN (SELECT d.a, sum(amount_d) as d_sum
from D as d
group by a) AS AD ON AD.a = a.id
WHERE a.name LIKE 'init%'
但我在 django ORM 上没有找到类似的东西。
【问题讨论】:
标签: django django-models