Пытаюсь собрать словарь из значений из БД

Цель: Создать словарь, примерно такой структуры:

d = {
    0: {
        'id': 'test_id',
        'alias': 'test_alias',
        'l2': {
            'id': 'test2_id',
            'alias': 'test2_alias',
            'l3': {
                'id': 'test3_id',
                'alias': 'test3_alias'
            }
        }
    },
}

Подробнее: Потом нужно передать в html файл, где с его(словаря) помощью построить трехуровневую разворачивающуюся менюшку (все началось с этого вопроса)


Что уже сделано:

for l1 in lavel.objects.all().filter(lvl=3):
    print(type(l1.id))
    d[l1.id]['id'] = l1.id
    d[l1.id]['alias'] = l1.alias
    d[l1.id]['l2'] = {}
    for l2 in lavel.objects.all().filter(lvl=4).filter(owner=l1.id):
        d[l1.id]['l2']['id'] = l2.id
        d[l1.id]['l2']['alias'] = l2.alias
        d[l1.id]['l2']['l3'] = {}
        for l3 in lavel.objects.all().filter(lvl=4).filter(owner=l1.id):
            d[l1.id]['l2']['l3']['id'] = l3.id
            d[l1.id]['l2']['l3']['alias'] = l3.alias

Структура БД (Если нужно):

class lavel(models.Model):
    owner = models.ForeignKey('self', null=True, on_delete=models.CASCADE)
    lvl = models.IntegerField(null=True, default=0, verbose_name='Уровень')
    alias = models.TextField(null=True, default='', verbose_name='Алиас')
    title = models.TextField(null=True, default='', verbose_name='Заголовок')
    txt = models.TextField(null=True, default='', verbose_name='Текст')
    is_active = models.BooleanField(default=True, verbose_name='Пубикация')

Ошибка: Не ясна. Ругается на строчку d[l1.id]['id'] = l1.id. Из python3 manage.py shell выводит такую ошибку:

KeyError                                  Traceback (most recent call last)
<ipython-input-94-d483ce0c0e32> in <module>
      1 for l1 in lavel.objects.all().filter(lvl=3):
      2         print(type(l1.id))
----> 3         d[l1.id]['id'] = l1.id
      4         d[l1.id]['alias'] = l1.alias
      5         d[l1.id]['l2'] = {}

KeyError: 6

Помогите, пожалуйста, сформировать нормальный словарь... Честно, я уже 3й день на этом застрял, а в проекте еще куча работы... Я буду крайне признателен любым(!) наводкам и советам!!! За ранее спасибо!


Ответы (0 шт):