使用django,假设我有一个模型,该模型是一个具有外键的Team模型,称为分组。我还有一个名为Pen的模型,带有一个团队的外键。
class Team(Model):
grouped = models.ForeignKey(
'self',
related_name='grouped_teams',
)
class Pen(Model):
team = models.ForeignKey(
Team,
related_name='pens',
)
ink = IntegerField()
有几个团队,每个团队都有钢笔。现在让我们假设您选择了几个团队并添加了一个新团队,所有这些团队都指向了这个团队。这种情况可能会在一些团队中多次发生,因此您最终会得到类似以下内容的内容:只有原始团队(最低级别的团队)才有笔:
A-Team
/\
/ \
/ \
B C
/\ 7 pens
/ \
/ \
/ \
D E
4 pens /\
/ \
/ \
/ \
F G
5 pens 2 pens
只知道A-Team,有没有办法汇总笔上的墨水总量?
self.grouped_teams.aggregate(Sum(' pens__ink'))适用于一个级别,但不是更多。原始的SQL?