我有一个模型如下。
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()
如果两个值都不为空,我需要以秒为单位获取记录列表的 (time2 - time1) 的平均值。
time_avg = transactions.aggregate(total=Avg('time_diff',field='time_diff'))
这给出了一个错误,指出“time_diff”不是一个有效的字段。我想将此列保留为派生属性。不是存储列。
最佳答案
你首先需要找到差异,然后取平均。您可以像这样使用 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'))
关于python - Django 为计算字段计算 Avg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48691352/