Как использовать 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’)
  )
)
<
Вернуться на верх