【问题标题】:Average calculated on the difference on a Min and Max value in Django根据 Django 中的最小值和最大值的差异计算平均值
【发布时间】:2011-10-27 20:36:56
【问题描述】:

我在 Django 中有两个简单的表,如下所示:

class Session(models.Model):
    id = models.AutoField(primary_key=True)

class Track(models.Model):
    id = models.AutoField(primary_key=True)
    session = models.ForeignKey(Session)
    when = models.DateTimeField(null=False, auto_now_add=True)

我需要找到所有会话的平均持续时间。会话持续时间的计算方法是用最低的when 值减去最高的when 值。我可以这样做吗:

Session.objects.all().annotate(duration=Max('track__when') - Min('track__when')).aggregate(Avg('duration'))

有更好的方法吗?

谢谢。

【问题讨论】:

    标签: django django-queryset django-aggregation


    【解决方案1】:

    因为我已经在 Querying data from Django 中回答了你同样的问题,你也不能只使用 ORM API:

    1. 您可以通过定义自定义注释来扩展 API,或者
    2. 您在 python 中执行部分算法,在您的视图/templatetag/whatever 中

    【讨论】:

      猜你喜欢
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 2014-11-20
      • 2023-04-02
      相关资源
      最近更新 更多