Заполнение сложного объекта из базы данных в 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? Есть ли вообще такой способ или мне придется выполнять несколько запросов и заполнять объект дискретными шагами?

Вернуться на верх