Заполнение сложного объекта из базы данных в Django
Я пытаюсь понять, как я могу создать сложный объект в Django, используя данные, полученные из разных, объединенных таблиц в базе данных, без необходимости делать серию явных запросов и затем вручную собирать все вместе.
Допустим, у меня есть три таблицы, которые выглядят следующим образом
**parent**
- id
- name
**attribute**
- id
- parent_id *(ForeignKey)*
- name
- value
**modifier**
- attribute_id *(ForeignKey)*
- value
- duration
Итак, каждый родитель имеет произвольное количество атрибутов, и каждый атрибут может иметь произвольное количество модификаторов, каждый из которых идентифицируется с помощью ForeignKeys в соответствующих моделях.
Из записей в этих таблицах я хотел бы построить объект Python, который имеет следующую структуру
**object**
- id
- name
- attributes {}
- name : (value, modifiers[(value, duration), (value, duration), …])
- name : (value, modifiers[(value, duration), (value, duration), …])
- …
Каков наилучший и наиболее эффективный подход к достижению чего-то подобного в Django? Есть ли вообще такой способ или мне придется выполнять несколько запросов и заполнять объект дискретными шагами?