Как использовать prefetch_related для получения нескольких строк, аналогично результату SQL
У меня вопрос об использовании prefetch_related. Исходя из моего понимания, мне нужно использовать prefetch_related для обратных отношений внешнего ключа
В качестве примера у меня есть модель User(id, name) и модель SchoolHistory(id, start_date, school_name, user_id[FK user.id]). Пользователь может иметь несколько записей школьной истории.
Если я запрашиваю базу данных, используя следующий SQL-запрос:
SELECT
user.id,
name,
start_date,
school_name
FROM user
INNER JOIN school_history ON school_history.user_id = user.id
ожидаемым результатом будет:
| User ID | Name | Start Date | School |
| 1 | Human | 1/1/2022 | Michigan |
| 1 | Human | 1/1/2021 | Wisconsin |
Вот текущий результат, который я получаю вместо этого с помощью ORM и сериализатора:
| User ID | Name | school_history
| 1 | Human | [{start_date:1/1/2022 , school:Michigan}, {start_date:1/1/2021 , school:Wisconsin}] |
<
User.objects.prefetch_related(
Prefetch(
‘school_history’
query_set=SchoolHistory.objects.order_by(‘start_date’)
)
)
<