标题可能有误导性,我不确定如何表达我的问题
我有两个模型是这样声明的:
class Record(models.Model):
# autogen id as primary key
name = models.ForeignKey(Product, on_delete=models.DO_NOTHING)
value = models.FloatField()
date = models.DateTimeField()
class Integration(models.Model):
# autogen id as primary key
action = models.FloatField()
on_record = models.ForeignKey(Record, on_delete=models.DO_NOTHING)
我一整年每天每小时有一个Record
,因此是24*365。
对于每个Record
,确切地说有十(10)个Integration
,每个都有各自不同的action
我需要的是Record
上的一个查询集,它有一个“额外列”,其中包含相关10个集成的action
的平均值。所以
我能够用这种方法生成Integration
的平均值
Integration.objects
.values('on_record')
.annotate(avg=Avg('action'))
但这是我所能做到的。我试过itertools.chain和许多select_related()
,但我现在比以前更困惑了。在我看来,它是一个简单的JOIN
,但我找不到通过ORM获得它的方法
如果更改模型的成本不高,则可以将相关名称添加到FK字段:
然后可以执行以下查询:
因为您需要一个
Record
的查询集,所以应该在该查询集上进行注释,而不是在Integration
上进行注释。有关聚合,请参见文档中的Following relationships backwards部分相关问题 更多 >
编程相关推荐