#django #database #many-to-many #manytomanyfield
Вопрос:
Я знаю, что могу найти всех авторов такой статьи, как:
paper.authors.all()
Это прекрасно работает, но просто возвращает мне набор запросов авторов.
Но я хочу, чтобы объект ManyToMany был похож (потому что я хочу сортировать после идентификаторов).
(идентификатор (BigAutoField), статья, автор)
Есть ли более быстрый способ сделать это тогда:
Paper.authors.through.objects.all().filter(paper=paper)
Поскольку моя база данных действительно велика ~200 миллионов записей, приведенная выше команда невыполнима
Моя модель выглядит так:
class Paper(models.Model, ILiterature):
authors = models.ManyToManyField(Author, blank=True)
(...)
Ответ №1:
Вы можете попробовать выбрать оптом,
papers = Paper.authors.through.in_bulk(ids)
Массовые команды Django работают быстрее и предназначены для массивных БД, подобных вашей. Вы можете проверить https://levelup.gitconnected.com/optimizing-django-queries-28e96ad204de подробности здесь.
Комментарии:
1. Это не решает проблему 🙁 все еще слишком медленно.