首页 > 解决方案 > 在 Django 中查找集合的 MAX、MIN 和 AVG

问题描述

我有一个名为Meter的对象,它有一个名为powerConsumptionReport_set的集合。

这是 models.py :

class Meter(models.Model):
region                  = models.PositiveSmallIntegerField(null=1)
IPAddress               = models.GenericIPAddressField(default=0,null=False,blank=False,unique=True)
PortNumber              = models.IntegerField(default=1024)
SerialNumber            = models.IntegerField(default=00000000,null=False,blank=False,unique=True)

class PowerConsumptionReport(models.Model):
meter = models.ForeignKey(Meter, blank=True, null=True, on_delete=models.CASCADE)
power = models.FloatField()

我需要从powerConsumptionReport_set中找到功率字段的最大值并将其显示在我的模板中。

这是我用来显示每个 Meter 的 DetailView :

class MeterDetailView(DetailView):
model = Meter
template_name = 'meter/specificMeter.html'

模板在这里:

<h1>
*** here i want to show min value of the set **** - 
{{ meter.powerconsumptionreport_set.first.power }} 
</h1>

如何从与每个仪表相关的 powerConsumptionReport_set访问功率字段的 Max、Min 和 AVG 值。

干杯。

标签: pythonmysqlpython-3.xdjango

解决方案


也许在 views.py 中获取这些值比在模板中进行更好。你可以做到这一点:

PowerConsumptionReport.objects.all().aggregate(Avg('power '))
PowerConsumptionReport.objects.all().aggregate(Min('power '))
PowerConsumptionReport.objects.all().aggregate(Max('power '))

推荐阅读