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