Django视图集中的聚合-Django Rest Framework:

问题描述 投票:0回答:2

我有一个具有以下属性的表-

created_at = TimestampField(auto_now_add = True,auto_now_update = False,editable = False)Updated_at = TimestampField(null = True,auto_now_update = True,editable = False)

并且其中有一项服务正在运行,首先进入系统,然后我们捕获created_at时间戳。

并且在完成服务一段时间后,脚本会更新表属性,并且我们捕获updated_at时间戳。

所以现在我想找到服务部署时间的平均值,即((updated_at-created_at)的加法除以服务总数,或者我们可以说表中的总行数。

因此该查询需要在Django ORM中实现,并且必须序列化到端点。

以便可以在前端获取数据。

你们能在这里帮助我吗,这是非常值得赞赏的?

提前感谢!

django django-rest-framework annotations aggregate-functions django-filter
2个回答
0
投票

更新1:Model.objects.annotate(avg_serv_dep=F('modified') - F('created')).aggregate(Avg('avg_serv_dep'))


您可以尝试Model.objects.annotate(avg_serv_dep=Avg(F('updated_at') - F('created_at')))


0
投票
I just came to these solutions.

queryset1=Model.objects.aggregate(y=(Max(F('updated_at')-F('created_at'),output_field=FloatField()))/60000000)

/60000000  to convert microsecond to minutes
AND

queryset = Model.objects.filter().values('attr1','attr2')\
           .annotate(min_time=Min(F('updated_at')- 
            F('created_at')),max_time=Max(F('updated_at')- 
            F('created_at')),avg_time=Avg(F('updated_at')- 
            F('created_at'))).order_by('attr1')
© www.soinside.com 2019 - 2024. All rights reserved.