Django: Получение объекта ManyToMany поля ManyToManyField

Я знаю, что могу найти всех авторов литературы, например:

paper.authors.all()

Это работает нормально, но только возвращает мне QuerySet авторов.

Но мне нужен объект типа ManyToMany (потому что я хочу сортировать по идентификаторам)

(id (BigAutoField), paper, author)

Есть ли более быстрый способ сделать это тогда:

Paper.authors.through.objects.all().filter(paper=paper)

Поскольку моя база данных очень большая ~200 миллионов записей, приведенная выше команда не выполнима

Моя модель выглядит следующим образом:

class Paper(models.Model, ILiterature):
    authors = models.ManyToManyField(Author, blank=True)
    (...)

Вы можете попробовать выбрать оптом,

papers = Paper.authors.through.in_bulk(ids)

Django bulk commands быстрее и предназначены для массивных БД, таких как ваша. Вы можете посмотреть https://levelup.gitconnected.com/optimizing-django-queries-28e96ad204de здесь для подробностей.

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