Встречается на 1% собеседований по Python
Как сделать 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
интервью вопросы и ответы