Код прекрасно работает без подзапроса, зачем его использовать?

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, в чем его преимущества?

Подзапросы могут облегчить написание сложных запросов, поскольку вы можете разбить запрос на более мелкие, более управляемые части. Как использовать подзапрос

В вашем случае запрос был не таким уж сложным.

Вернуться на верх