Django select_related таблица join только для отношения "многие-ко-многим

У меня есть Django приложение с моделью A с представлением ManyToManyField bees к модели B. Для одного представления, когда я выбираю кучу A, мне также нужны идентификаторы их B. По умолчанию Django запрашивает связанные B для каждого A по отдельности слишком медленно, поэтому я использую select_related.

Если я делаю A.objects.select_related('bees') Django выбирает полные B модели:

SELECT ("app_a_bees"."from_a_id") AS "_prefetch_related_val_from_a_id", 
       "app_b"."id", 
       "app_b"."field1", 
       "app_b"."field2", 
       ... 
FROM "app_b" 
INNER JOIN "app_a_bees" ON ("app_b"."id" = "app_a_bees"."to_b_id") 
WHERE "app_a_bees"."from_a_id" IN (... list of A ids ...)

Но мне нужны только их значения id, поэтому мне нужно выбрать только таблицу app_a_bees join, чтобы получить их, а не таблицу B model.

Я пробовал A.objects.select_related('bees__id') (я также пробовал 'bees_id'), но Django это не нравится, отдельные поля не могут быть префетчированы таким образом.

Я также пробовал A.objects.select_related(Prefetch("bees", queryset=B.objects.all().only("id")), но это все равно соединяется с таблицей B, чтобы выбрать поле id, которое Django уже имеет из таблицы join.

Есть ли способ предварительно получить только таблицу объединения для моих A объектов?

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