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 }}
我试图得到一个结果,告诉我在一个项目上工作了大约 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 }}