Код, который вы показываете, не имеет отношения к скрытию / отображению панелей, поэтому я предполагаю, что вы используете библиотеку JS И что эта библиотека использует идентификаторы и данные для отображения объектов.
Если это так, все, что вам нужно, это использовать уникальные идентификаторы, иначе он всегда остановится на первом accordion
найденном.
Чтобы сделать это, используйте ваши индексы цикла:
<div class="panel-group accordion" id="accordion_{{ category.id }}" role="tablist" aria-multiselectable="true">
И свяжите его с вашим a
следующим образом:
<a role="button" data-toggle="collapse" data-parent="#accordion_{{ category.id }}" href="#collapseOne_{{ issue }}" aria-expanded="true" aria-controls="collapseOne">
Здесь возникает проблема: вам также нужно иметь один уникальный идентификатор для каждого CollapseOne
, но publication
цикл - после создания a
.В любом случае, странно иметь один a
открытый несколько элементов, так почему бы не сделать его одним?
<div id="collapseOne_{{ category.id }}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="accordion">
{% for publication in category.publication.all %}
<div class="panel-body">
{{ publication }}
</div>
{% endfor %}
</div>
Заменить предыдущий {{ issue }}
в a
на {{ category }}
, и вы должнызадавать.Теперь, чтобы определить, работает ли ваша библиотека так, как предполагалось ^^
Вам нужно установить {{category.id}}
, потому что если ваше поле category
содержит пробелы, оно не будет работать.
Также яне используется для шаблонов, поэтому я надеюсь, что это позволит вам сделать это: p