这是我的简化模型:
class Item(models.Model):
pass
class TrackingPoint(models.Model):
item = models.ForeignKey(Item)
created = models.DateField()
data = models.IntegerField()
class Meta:
unique_together = ('item', 'created')
在我的应用程序的许多部分中,我需要从按字段排序的每个项目中检索一组 's 并使用最新字段Item
注释每个项目。例如,类的实例有 3 个:data
TrackingPoint
created
i1
Item
TrackingPoint
tp1 = TrackingPoint(item=i1, created=date(2010,5,15), data=23)
tp2 = TrackingPoint(item=i1, created=date(2010,5,14), data=21)
tp3 = TrackingPoint(item=i1, created=date(2010,5,12), data=120)
我需要一个查询来检索用字段值i1
注释的实例,就像按字段排序的最新跟踪点一样。该查询还应该返回根本没有任何' 的 '。如果可能的话,我不喜欢使用's方法来做到这一点。tp1.data
tp1
created
Item
TrackingPoint
QuerySet
extra
这就是我到目前为止所尝试的......但失败了:(
Item.objects.annotate(max_created=Max('trackingpoint__created'),
data=Avg('trackingpoint__data')).filter(trackingpoint__created=F('max_created'))
有任何想法吗?