これが私の単純化されたモデルです:
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')
私のアプリケーションの多くの部分で、一連の を取得し、フィールドで並べ替えられた各アイテムから最新のフィールドで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
注釈が付けられたインスタンスを取得するためのクエリが必要です。これは、フィールドで並べ替えられた最新の追跡ポイントです。そのクエリは、 をまったく含まないも返す必要があります。可能であれば、これを行うためにのメソッドを使用しないことを好みます。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'))
何か案は?