Встречается на 1% собеседований по Python
Как сделать JOIN через Django ORM
В Django ORM JOIN выполняется автоматически при использовании связанных полей (ForeignKey, OneToOneField, ManyToManyField). Основные способы:
- 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 и обратных связей (отдельный запрос)
python
# Получаем все книги с их жанрами
books = Book.objects.prefetch_related('genres').all()
for book in books:
print([genre.name for genre in book.genres.all()])- Фильтрация по связанным полям (автоматический JOIN)
python
# Книги автора с именем "John"
books = Book.objects.filter(author__name='John')- values()/values_list() с связанными полями
python
# Получаем пары книга-автор
Book.objects.values('title', 'author__name')Для сложных JOIN можно использовать:
python
from django.db.models import Q, F
Book.objects.filter(author__country=F('publisher__country'))
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы