2012-04-23 60 views
0

的总和假设我们有以下两种模式:Django的聚集 - 两个和

class Player(Model): 
    alliance = ForeignKey("Alliance") 
    points = PositiveIntegerField() 

class Alliance(Model): 
    points = PositiveIntegerField() 

每个球员,每个联盟都有点的具体数额。总联盟点数为alliance.points + Sum(player_set__points)

我想要做的是获取总点数量排序的所有联盟。 问题是我似乎无法在聚合中执行Sum + Sum。

回答

1

您可以使数据库非标准化。在Alliance上添加字段sum,在post_savepost_deleteAlliancePlayer的更新。因此,您将拥有随时可用的价值并轻松排序。

+0

那么,玩家的声望经常变化,因为我想要在飞行中计算总和。这似乎是不可能的,不是吗? – aemdy 2012-04-24 10:04:41

+0

不是不可能的,你总是可以拥有原始的sql。但更不优雅。 – ilvar 2012-04-25 04:02:36