我为我的网站部件页面创建了侧边栏包含文件,并使用regroup
标记按类别列出部件。它在本地工作得很好 - 见下面的截图。但在生产中,它会多次重复类别和部分 - 请参阅documentation。我迷失了这个原因。谢谢你的帮助。
我的侧边栏包含文件的代码:
{% regroup parts by category as category_list %}
<ul class="c-sidebar-menu collapse " id="sidebar-menu-1">
{% for category in category_list %}
<li class="c-dropdown c-active c-open">
<a href="javascript:;" class="c-toggler">{{ category.grouper|capfirst }} <span class="c-arrow"></span> </a>
<ul class="c-dropdown-menu">
{% for p in parts %}
{% if p.category == category.grouper %}
<li>
<a href="{% url 'part_detail' category=p.category slug=p.slug %}">{{ p.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
本地视图的屏幕截图(正确显示) http://www.dev.ddmpowertools.com/products/parts/
答案 0 :(得分:1)
以下是正确的代码。它并没有像我想象的那样重复,它只是从上到下遍历我的类别,然后按类别对它们进行分组,因为它们位于列表中,这就是我获得重复类别的原因。在我的|dictsort:"category.slug"
循环中将.list
添加到我的重新组合代码和for
修复了此问题。
{% regroup tools|dictsort:"category.slug" by category as grouped %}
<ul class="c-sidebar-menu collapse " id="sidebar-menu-1">
{% for category in grouped %}
<li class="c-dropdown c-active c-open">
<a href="javascript:;" class="c-toggler">{{ category.grouper|capfirst }} <span class="c-arrow"></span> </a>
<ul class="c-dropdown-menu">
{% for t in category.list %}
{% if t.category == category.grouper %}
<li>
<a href="{% url 'tool_detail' category=t.category slug=t.slug %}">{{ t.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>