可以说我在db中有100个对象,每个对象都有created_at
和done_at
时间。我想计算所有对象的持续时间平均值。有这样的想法:首先计算所有对象的持续时间,然后求平均值。但是还有其他好的方法会有所帮助吗?
答案 0 :(得分:2)
您可以为此使用aggregate()
和F
expressions
from django.db.models import Avg, F
Model.objects.aggregate(average_delta=Avg(F('done_at') - F('created_at')))
答案 1 :(得分:1)
除了this answer之外,您还可以尝试
from django.db.models import Avg, F
Model.objects.annotate(diff=F('done_at') - F('created_at')).aggregate(duration=Avg('diff'))
答案 2 :(得分:0)
使用Jieter和Jerin Peter George的答案几乎没有变化,并且效果很好:
from django.db.models import Avg, F, Sum, DurationField
IssueDone.objects.annotate(time_elapsed=Sum(Cast(F('done_date')-F('created_date'), DurationField()))).aggregate(Avg('time_elapsed'))