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

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