количество постов для тега достаю так: post.tags.annotate(num_posts=Count('posts'))
и знаю, что можно уменьшить количество запросов с помощью Prefetch, подскажите как?
код ниже только увеличил количество запросов:
post.tags.prefetch_related(Prefetch('posts')).annotate(num_posts=Count('posts'))
ссылка на доку Prefetch https://docs.djangoproject.com/en/2.2/ref/models/querysets/#django.db.models.Prefetch
Prefetch обычно помогает если тебе нужно оптимизировать запросы на получение списка связанных дочерних объектов для каждого родительского объекта Для этого нужно написать его в менеджере модели и указать to_attr. У модели появится атрибут в котором будет лежать кешированные дочерние объеты Но это не всегда оптимизация. Нужно смотреть на всех страницах где используется родительские объекты
Обсуждают сегодня