Django 中的数学以获得总返回

Math in Django to get a total returned

我试图得到一个结果,告诉我在一个项目上工作了大约 10.5 小时。

这是我认为的做法:

time = Time.objects.filter(my_company=my_company, project=project)
raw_hours = time.aggregate(Sum('hours'))
raw_minutes = time.aggregate(Sum('minutes'))
adj_minutes = raw_minutes.raw_minutes__sum / 100
hours = adj_minutes + raw_hours.raw_hours__sum
return {'hours': hours}

当我将 {{ view.hours }} 添加到我的模板时,我在 return 中没有看到任何内容。我期待 view.hours == 10.5 或类似的东西,具体取决于数学。

所以我有两个问题。我是否正确地考虑了这一点,是否有更有效的方法来做到这一点?

感谢您的帮助。

您可以通过以下方式获得两个聚合:

d = time.aggregate(Sum('hours'), Sum('minutes'))

这应该 return 一个看起来像这样的字典:

{'hours__sum' : Decimal('10'), 'minutes__sum' : Decimal('630')}

因此,要访问值,您应该像处理任何其他字典一样处理它。

hours = d['hours__sum']

在模板上,您只需要提供上下文字典的键,在您的例子中:

{{ hours }}