【问题标题】:Django aggregation - Sum of two SumsDjango 聚合 - 两个总和的总和
【发布时间】:2012-05-04 01:40:51
【问题描述】:

假设我们有以下两个模型:

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

class Alliance(Model):
    points = PositiveIntegerField()

每个玩家和每个联盟都有特定数量的积分。联盟积分总数为alliance.points + Sum(player_set__points)

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

【问题讨论】:

    标签: django models django-aggregation


    【解决方案1】:

    您可以对数据库进行非规范化。在Alliance 上添加一个字段sum,在AlliancePlayerpost_savepost_delete 上更新它。因此,您将拥有即用型价值并轻松对其进行排序。

    【讨论】:

    • 嗯,玩家的声望经常变化,因此我想即时计算总和。这似乎是不可能的,不是吗?
    • 并非不可能,您始终可以拥有原始 sql。但不那么优雅。
    猜你喜欢
    • 2012-08-23
    • 2014-07-27
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多