【问题标题】:How do I calculate the average difference between two dates in Django?如何计算 Django 中两个日期之间的平均差异?
【发布时间】:2019-09-02 07:02:38
【问题描述】:

使用 Django 和 Python 3.7。我正在尝试编写一个查询来给我两个日期之间差异的平均值。我的模型中有两个字段,都是“DateTimeField”,我尝试像这样计算平均差异

everything_avg = Article.objects.aggregate(
    avg_score=Avg(F('removed_date') - F('created_on'), output_field=models.DateTimeField())
).filter(removed_date__isnull=False)
return everything_avg

但是在运行上面的时候我最终得到了这个错误

AttributeError: 'dict' object has no attribute 'filter'

获得平均水平的正确方法是什么?

【问题讨论】:

    标签: django python-3.x date datetime


    【解决方案1】:

    正如文档所说:

    aggregate() 是 QuerySet 的终止子句,当被调用时,它会返回名称-值对的字典。 *

    aggregate 方法返回一个字典,因此您需要在它之前进行过滤。因此,如果您按以下方式更改代码,您将得到结果:

    everything_avg = Article.objects.filter(removed_date__isnull=False)\
        .aggregate(
            avg_score=Avg(
                F('removed_date') - F('created_on'),
                output_field=models.DateTimeField()
            )
        )
    return everything_avg
    

    【讨论】:

      猜你喜欢
      • 2022-08-21
      • 2013-06-11
      • 2015-11-22
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多