モデルが次のように構成されている場合:
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
。データの収集には、毎日のすべての時間と、1 時間ごとのすべての統計が欠けています。
のこの階層の統計を合計して平均化するための最良の方法は何models
ですか? たとえば、ある日のデータがないことがわかっているときに、データのあるすべてのstat2
の合計と平均が必要だとしましょう。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