gpt4 book ai didi

python - 在django中使用聚合(Avg())时如何解析{'value__avg' : 46. 26524716693248} 'value_avg'

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:46 25 4
gpt4 key购买 nike

我正在使用 django 这是我的模型:

 class Location(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50)
altitude = models.IntegerField(max_length=10000)
area = models.ForeignKey('Area')

def __str__(self):
return str(self.area) + ':' + str(self.name)
#measurement.id value date location
class Measurement(models.Model):
id = models.IntegerField(primary_key=True)
value = models.FloatField(max_length=50)
data = models.DateTimeField()
location = models.ForeignKey('Location')

def __str__(self):
return "measurement@"+str(Location.objects.filter(id=self.id))

我的 HTML 页面显示 {'value__avg': 46.26524716693248} 而它应该只显示 46.265。

这是我的功能:

@property
def average_measurement(self):
locations = Location.objects.filter(area__name=self.name)
return Measurement.objects.filter(location__in=locations).aggregate(Avg('value'))

那么我怎样才能去掉丑陋的部分呢?

最佳答案

aggregate()返回一个字典,其中键由分组键和分组函数名组合而成,您可以直接通过键获取值:

return Measurement.objects.filter(location__in=locations).aggregate(Avg('value'))["value__avg"]

或者,如果需要,您也可以使用点符号在模板中执行此操作:

{{ obj.average_measurement.value__avg }}

您也可以将键名预设为您自己的值:

return Measurement.objects.filter(location__in=locations).aggregate(my_average=Avg('value'))

然后,您将访问它:

{{ obj.average_measurement.my_average }}

关于python - 在django中使用聚合(Avg())时如何解析{'value__avg' : 46. 26524716693248} 'value_avg',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36649726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com