newest = Comment.objects.filter(post=OuterRef('pk')).order_by('-created_at')
posts = Post.objects.annotate(newest_commenter_email=Subquery(newest.values('email')[:1]))
,
newest = Comment.objects.filter(post=OuterRef('pk')).order_by('-created_at')
posts = Post.objects.annotate(newest_commenter_email=newest.values('email')[:1])
两者都可以,那么为什么使用Subquery
,它的优点是什么?
子查询可以使编写复杂查询变得更容易,因为您可以将查询分解为更小、更易于管理的部分。如何使用子查询
在你的例子中,这个查询并没有那么复杂。