Встречается на собеседованиях • сегодня
Как сделать JOIN таблиц в Django
В Django для выполнения JOIN между таблицами используются механизмы связанных полей (ForeignKey, ManyToManyField, OneToOneField) и методы QuerySet.
Основные способы:
- select_related() - для ForeignKey и OneToOne (SQL JOIN)
python
# Получает автора вместе с книгой за один запрос
books = Book.objects.select_related('author').all()
for book in books:
print(book.author.name) # Не вызывает дополнительных запросов- prefetch_related() - для ManyToMany и обратных ForeignKey (отдельный запрос)
python
# Получает все книги с их жанрами
books = Book.objects.prefetch_related('genres').all()
for book in books:
print(book.genres.all()) # Данные уже в кэше- Фильтрация по связанным полям (неявный JOIN)
python
# Найти книги автора с именем 'John'
books = Book.objects.filter(author__name='John')- Аннотации и агрегации через связанные поля
python
from django.db.models import Count
authors = Author.objects.annotate(book_count=Count('books'))Оптимальный выбор между select_related и prefetch_related зависит от структуры данных и конкретного случая использования.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы