2010-08-19 4 views
1

У меня есть два объекта с четырьмя уровнями, которые я передаю в шаблон django. В настоящее время я перехожу через каждый уровень и опускаюсь на уровень, если он существует. В итоге у меня появился ключ, key2 и key3, который представляет текущее местоположение объекта во время цикла. Я хотел бы ссылаться на другой объект, который имеет те же уровни, используя эти переменные, но у меня есть некоторые проблемы.Использование переменной в качестве ключевого объекта в шаблоне шаблона Django

Если бы я пытался сделать это в Python, это будет выглядеть следующим образом

my_object[ key ][ key2 ][ key3 ]

Но в шаблонах Django, она не кажется, что я могу использовать скобки, и если бы я использовал периоды было бы ключ мысли - это ключевое имя, а не как переменная.

Если вам нужна дополнительная информация о моем коде, сообщите мне. Благодаря!

Редактировать: Вот пример того, как выглядит мой объект, и мой код шаблона.

variable1 = { 
    "content": { 
     "pages": { 
      "view":True, 
      "add":True, 
      "edit":True, 
      "delete":True 
     }, 
     "articles": { 
      "view":True, 
      "add":True, 
      "edit":True, 
      "delete":True 
     }, 
     "slideshow": { 
      "view":True, 
      "edit":True 
     }, 
    }, 
    "people": { 
     "view":True, 
     "add":True, 
     "edit":True, 
     "delete":True, 
     "sort-staff":True, 
     "sort-riders":True 
    } 
} 

переменная2 такая же, как и переменная, с теми же клавишами, но некоторые ключи отсутствуют.

вот что мой шаблон выглядит как для сортировки по этому объекту.

{% for key, value in variable1.items %} 
    <strong>{{ key|title }}</strong> 
    {% for key2, value2 in value.items %} 
     {% if value2.items %} 
      <p class="indent">{{ key2|title }} 
      {% for key3, value3 in value2.items %} 
       <p class="indent"><input type="checkbox" name="form_permission_{{ key }}_{{ key2 }}_{{ key3 }}" {% if variable2[key][key2][key3] %}checked="checked"{% endif %}> {{ key3|title }}</p> 
      {% endfor %} 
      </p> 
     {% else %} 
      <p class="indent"><input type="checkbox" name="form_permission_{{ key }}_{{ key2 }}"> {{ key2|title }}</p> 
     {% endif %} 
    {% endfor %} 
{% endfor %} 

Если вы посмотрите на самом отступ линии, вы увидите {% if variable2[key][key2][key3] %}checked="checked"{% endif %}. Вы должны понимать, что я пытаюсь выполнить с этим кодом.

+0

Можете ли вы опубликовать, как выглядит ваш объект, и код вашего шаблона? –

+0

Добавлен код, спасибо! –

ответ

0

Я закончил сортировку и сравнение до того, как данные были отправлены в шаблон, поэтому этот вопрос больше не нужен. Не стесняйтесь публиковать другие варианты.

0

Это не может быть сделано таким образом. Посмотрите на создание шаблона или фильтра для этого.

+0

Я был уверен, что этого не может быть сделано, но похоже, что многие люди могут нуждаться в этом. Я надеялся найти что-то, что кто-то уже написал (пользовательский тег или фильтр), который я могу подключить. –

Смежные вопросы