Почему добавление `only()` к моему набору запросов приводит к N+1?

У меня есть набор запросов Django под названием qs. Когда я оцениваю его, он выполняет следующий SQL-запрос:

SELECT "projects_issue"."id", "projects_issue"."name", "projects_issue"."milestone_id" FROM "projects_issue" WHERE "projects_issue"."milestone_id" = 1 ORDER BY "projects_issue"."name" ASC LIMIT 21

Теперь я хочу выбрать только поле id, поэтому я оцениваю qs.only("id"). При этом выполняется более одного запроса:

SELECT "projects_issue"."id" FROM "projects_issue" WHERE "projects_issue"."milestone_id" = 1 ORDER BY "projects_issue"."name" ASC LIMIT 21
SELECT "projects_issue"."id", "projects_issue"."milestone_id" FROM "projects_issue" WHERE "projects_issue"."id" = 1 LIMIT 21
SELECT "projects_issue"."id", "projects_issue"."milestone_id" FROM "projects_issue" WHERE "projects_issue"."id" = 2 LIMIT 21

Дополнительные запросы - это N+1, выполняющий запрос для каждого возвращаемого элемента в наборе запросов. У меня не зарегистрировано никаких сигналов Django. Что может быть причиной этих дополнительных запросов? Есть ли что-нибудь, что я могу найти в наборе запросов, чтобы проанализировать его и лучше понять такое поведение?

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