【问题标题】:Django Query: aggregate() + distinct(fields) not implementedDjango Query:聚合()+不同(字段)未实现
【发布时间】:2021-10-21 23:27:08
【问题描述】:

我有以下型号:

class Data(models.Model):
    metric = models.IntegerField(choices=....)
    date = models.DateField()
    value = models.IntegerField()
    linkedObject = models.ForeignKey()
    .....

我想要实现的是为最新的指标和日期创建所有值的总和。

我已经使用的是 order_by + distinct 来获取每个指标选择的最新值。这行得通。

Data.objects.all().order_by("metric", "-date").distinct("metric")

我尝试将其与聚合相结合以进行下一步:

Data.objects.all().order_by("metric", "-date").distinct("metric").annotate(Sum("value"))

很遗憾,我收到以下错误消息:

aggregate() + distinct(fields) not implemented.

提示:我使用 postgres 作为数据库

【问题讨论】:

    标签: django postgresql django-models


    【解决方案1】:

    这应该是可能的:

    Data.objects.order_by("metric", "-date").values(
        "metric", "date",
    ).annotate(value_sum=Sum("value"))
    

    这将按metricdate 对总和进行分组,并返回具有所需排序的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-20
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 2022-10-09
      相关资源
      最近更新 更多