TGViewer
Django Python Django Python @django_pythonl · 6.62K subscribers
Post #381 2.14K
🐍 Полезный Django-совет

Если вы работаете с Django ORM и выбираете связанные объекты,
не делайте лишние запросы к базе.

Частая ошибка:

for post in Post.objects.all():
print(post.author.name)



Если у вас 100 постов — Django сделает 101 SQL-запрос
(1 для постов + 100 для авторов).

Это называется N+1 проблема.

Исправляется одной строкой:

posts = Post.objects.select_related("author")

for post in posts:
print(post.author.name)


Теперь Django сделает один JOIN-запрос,
и все авторы загрузятся сразу.

Когда использовать:

select_related() - для ForeignKey и OneToOne

prefetch_related() - для ManyToMany и reverse relations

posts = Post.objects.prefetch_related("tags")

💡 Правило:
если вы обращаетесь к связанным объектам в цикле - почти всегда нужен select_related или prefetch_related.

Это может ускорить страницу в десятки раз.

#django #python
More from @django_pythonl
  1. Sep 13, 2026🔥 Django Q() objects — один из самых полезных инструментов ORM, который многие используют…
  2. Sep 11, 2026🔥 Хак в Django: Meta.indexes можно использовать для собственных миграций Оказывается, mod…
  3. Aug 31, 2026Нечёткий поиск в Django + PostgreSQL можно сделать намного умнее обычного icontains. В Cak…
  4. Aug 14, 2026🐍 Django-разработчикам: `DEBUG=True` в проде опаснее, чем кажется. Это не просто красивые…
  5. Aug 8, 2026🚀 Django 6.1 вышел: меньше магии, больше контроля Новая версия Django приносит улучшения…
  6. Jul 22, 2026⚡️ django-orjson ускоряет работу Django с JSON Adam Johnson выпустил библиотеку django-orj…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →