0

考虑这两个简单的模型:

from django.db import models

class Foo( models.Model ):
  pass

class Bar( models.Model ):
  time = models.DateTimeField( auto_now_add=True )
  foo = models.ForeignKey(
    Foo,
    on_delete=models.CASCADE
    related_name='bars'
  )

如何Foo按第一个相关对象排序Bar对象?

Foo.objects.order_by('-bars.first__time')
4

1 回答 1

1

鉴于“第一个”是Bar具有“最旧”时间的对象,我们可以首先.annotate(..)我们的Foo对象,然后按该最小值排序。因此,我们首先用 注释Min(..),然后使用该注释:

from django.db.models import Min

Foo.objects.annotate(
    min_time=Min('bars__time')
).order_by('-min_time')
于 2019-05-12T07:42:03.207 回答