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
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