Я начинаю работать с трясогузкой (и Django) и использую wagtailmenus.

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

main_menu.html

{% for item in menu_items %}
    <li class="dropdown nav-item">
        <a class="nav-link href="{{ item.href }}">{{ item.text }}</a>
        {% if item.has_children_in_menu %}
            {% sub_menu item %}
        {% endif %}
    </li>
{% endfor %}

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

sub_menu.html

<div class="dropdown-menu">
  <a href="{{ item.href }}" class="dropdown-item">
       {{ item }}
  </a>
</div>

Однако item является предыдущим элементом, поэтому я просто повторяю элемент верхнего уровня один раз.

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

псевдо_под_меню.html

{% for sub_item in item %}
      <a href="{{ sub_item.href }}" class="dropdown-item">
           {{ sub_item.text }}
      </a>
{% endfor %}

Но это возвращается

Объект MainMenuItem не повторяется

Как я могу это сделать?

1
Ben Mayo 22 Апр 2020 в 13:12

1 ответ

Я понял это с помощью панели инструментов Django Debug.

main_menu.html

                    {% if item.has_children_in_menu %}
                        {% sub_menu item %}
                    {% endif %}

sub_menu.html

                    {% for item in menu_items %}
                        <a href="{{ item.href }}" class="dropdown-item">
                            {{ item.text }}
                        </a>
                    {% endfor %}
3
Ben Mayo 22 Апр 2020 в 14:42