【发布时间】:2019-03-05 17:13:32
【问题描述】:
我有一个看起来像这样的模型:
class Payment(TimeStampModel):
timestamp = models.DateTimeField(auto_now_add=True)
amount = models.FloatField()
creator = models.ForeignKey(to='Payer')
计算每天平均支出的正确方法是什么? 我可以按天汇总,但是付款人不花任何钱的天数将不计算在内,这是不正确的
更新:
所以,假设我的数据库中只有两条记录,一条来自 3 月 1 日,一条来自 1 月 1 日。每天的平均支出应该是
(Sum of all spendings) / (March 1 - January 1)
除以 60
然而,这当然只是给我每件商品的平均支出,而天数将给我 2:
for p in Payment.objects.all():
print(p.timestamp, p.amount)
p = Payment.objects.all().dates('timestamp','day').aggregate(Sum('amount'), Avg('amount'))
print(p
输出:
2019-03-05 17:33:06.490560+00:00 456.0
2019-01-05 17:33:06.476395+00:00 123.0
{'amount__sum': 579.0, 'amount__avg': 289.5}
【问题讨论】:
-
您可以添加示例数据以及您目前尝试的内容吗?
-
@ShafikurRahman 完成 - 在更新中添加了一些信息
-
你使用什么数据库?我的第一个猜测是这只能使用原始 SQL,但是数据库类型是相关的。
-
好吧,您可以只计算此期间所有付款的最小和最大日期之间的天数,然后将您的付款总额除以您的天数
标签: django django-models django-queryset