Отсутствие оптимизации запросов
Анти-паттерн
Отсутствие оптимизации запросов может привести не просто к большому, а к чрезмерному количеству запросов к БД.
Пример¶
Изначально, для каждого автора выполняется отдельный запрос для получения связанных книг, а если авторов окажется много, общее количество запросов к БД увеличится соответственно. Django может предзагружать данные одним дополнительным запросом и не выполнять лишних.
Плохо:
authors = Author.objects.all()
for author in authors:
books = author.books.all()
print(f'Автором {author.name} написано книг: {books.count()} шт.')
Хорошо:
authors = Author.objects.annotate(book_count=Count('books'))
for author in authors:
print(f'Автором {author.name} написано книг: {author.book_count} шт.')