考虑以下两个简单模型:
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')
答案 0 :(得分:1)
考虑到“第一个”是时间最长的“ Bar
”对象,我们可以先.annotate(..)
个Foo
对象,然后进行排序在那个最低限度。因此,我们首先使用Min(..)
进行注释,然后使用该注释:
from django.db.models import Min
Foo.objects.annotate(
min_time=Min('bars__time')
).order_by('-min_time')