Django计算计算字段的平均值

时间:2018-02-08 17:25:41

标签: python django django-models django-rest-framework

我有一个模型如下。

 File "D:\Henko\backend\lib\pybitcointools\bci.py", line 114, in 
 history (addr, offset))
 File "D:\Henko\backend\lib\pybitcointools\bci.py", line 21, in 
 make_request raise Exception(p)
 Exception: <urlopen error [Errno 13] Permission denied>

如果两个值都不为空,我需要获得记录列表的(time2 - time1)的平均值(以秒为单位)。

class Transaction(models.Model):

    time1 = models.DateTimeField(null=True)
    time2 = models.DateTimeField(null=True)

    @property
    def time_diff(self):
        return time2.total_seconds() - time1.total_seconds()

这会出错,说'time_diff&#39;不是有效字段。我想将此列保留为派生属性。不是存储列。

2 个答案:

答案 0 :(得分:1)

你首先需要找到差异,然后采取平均值。您可以像这样使用django F函数。

from django.db.models import F    
result = Transaction.objects.filter('your_filter_here').annotate(time_diff=F('time1')-F('time2')).aggregate(Avg('time_diff'))

答案 1 :(得分:0)

你试过吗

time_avg = transactions.aggregate(Avg('time_diff')).values()