Django ORM: как получить 10 последних комментариев для каждого сообщения в наборе запросов
У меня есть модель Post и модель Comment, которая имеет FK к Post и метку времени.
Я хочу выбрать все посты, а для каждого поста выбрать 10 последних комментариев. Это нужно для того, чтобы сериализатор django REST framework включал эти 10 комментариев для каждого сериализованного поста. Я хочу, чтобы запрос был эффективным, чтобы не делать 101 select при сериализации страницы из 100 постов.
prefetch_related, похоже, не позволяет нарезать X записей для каждой выбранной записи.
аннотация и подзапросы не будут работать, потому что они не могут возвращать список объектов.
Django's ORM не может этого сделать
Решение находится в этой библиотеке: https://github.com/dimagi/django-cte