Queryset,只获取其中一个反向关系

Queryset, get only one of reverse relationships

class Foo(models.Model):
    name = CharField
    createdat = DateTimeField

class Bar(models.Model):
    rel = ForeignKey(Foo, related_name='bars')
    createdat = DateTimeField

Foo.prefetch_related('bars').all() 给我所有的酒吧。有什么方法可以只使用一个查询为每个 Foo 获取最新的 Bar 吗?

试试这个:

A.prefetch_related('bars').latest()

您想使用 Prefetch 对象,即 here in the docs

Prefetch() 允许您过滤查询,就像在您的示例中一样:

queryset = Bar.objects.latest('createdat')
latest_bars = Foo.objects.prefetch_related(
    Prefetch(
        'bars', 
        queryset, 
        to_attr="latest_bar"
    )
)
the_latest_bar_for_first_foo = latest_bars[0].latest_bar