有没有一种方法可以告诉prefetch_related
仅获取有限的相关对象? 假设我正在获取用户列表并且我知道我想获取他们最近的评论。 而不是在循环中为每个用户获取评论,我使用prefetch_related在获取用户时预先获取它们。 我的理解是,这将获取原始查询结果中任何用户发表的所有评论,但我只想显示每个用户的最新5条评论。
如果评论列表非常庞大,这会如何影响性能? 有没有一种方法可以在单个(或两个)查询中仅获取每个用户的5条评论? 它不必与获取用户的原始查询相同,但那样做会很好。
我基本上想把这个转变成:
users = User.objects.all()
for user in users:
user.comments.all()[:10]
变成这样
User.objects.all().prefetch_related('comments', limit=10)
如果用户有100个或10000个评论,它们并不会全部加载到内存中。你如何在原始SQL中实现这样的功能?