【问题标题】:find MAX,MIN and AVG of a set in Django在 Django 中查找集合的 MAX、MIN 和 AVG
【发布时间】:2021-01-23 09:06:40
【问题描述】:

我有一个名为 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 中找到 power 字段的最大值并将其显示在我的模板中。

这是我用来显示每个仪表的 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 中访问 power 字段的 Max、Min 和 AVG 值。

干杯。

【问题讨论】:

标签: python mysql python-3.x django


【解决方案1】:

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

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

【讨论】:

  • 因为我需要过滤特定的仪表并找到该仪表的最大功率值,所以这种技术没有用,因为当我使用 filter 时,聚合方法不起作用工作。
  • PowerConsumptionReport.objects.filter(meter=1).aggregate(Max('power')) 我觉得可以,你可以试试
  • @farzanfarahani 不客气,编码不错 :)
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 2021-07-15
  • 2013-07-18
  • 1970-01-01
  • 2021-05-04
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多