У меня есть модель, которая выглядит примерно так:
class Payment(TimeStampModel):
timestamp = models.DateTimeField(auto_now_add=True)
amount = models.FloatField()
creator = models.ForeignKey(to='Payer')
Как правильно рассчитать средние расходы в день?
Я могу агрегировать по дням, но тогда дни, когда плательщик ничего не тратит, не будут учитываться, что неправильно
UPDATE:
Итак, допустим, у меня есть только две записи в моей базе данных: одна с 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}