如果您的模型结构如下:
class Hour(models.Model):
stat1 = models.FloatField()
stat2 = models.FloatField()
stat3 = models.FloatField()
class Day(models):
hour = models.ForeignKey(Hour) #e.g.: Hour.id=1, Hour.id=2, ..., Hour.id=24
class Weather(models.Model):
day = models.ForeignKey(Day)
注意:hours
可能会从某些中丢失,days
并且stats
可能会从某些中丢失hours
。数据收集缺少每天的所有时间和每小时的所有统计数据。
在这个层次结构上求和和平均统计数据的最佳方法是models
什么?例如,假设当我知道有些日子没有数据时,我想要所有有数据的stat2
at的总和和平均值?H5
days
Weather
H5
更新:我自己的解决方案,假设 Day.id 等于一天中的小时:例如,如果 Day.id == 5,那么它是当天的 H5:
hours = [[hour for hour in w.day.objects.all() if hour.id==5] \
for w in Weather.objects.all()]
var2_sum = [sum(h.var2 for h in hours if hasattr(h,'var2'))]
var2_count = [count(h.var2 for h in hours if hasattr(h,'var2'))]
var2_avg = var2_sum / var2_count