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 здесь для подробностей.