Hej. Z poziomu panel admina mam możliwość ustalenia czy dana podstrona jest rodzicem innej. Problem jest tak:
Pętla zaczyna od podstrony1 - nie jest rodzicem więc wyświetla się normalnie, dalej podstrona 2 - to samo, z kolei podstrona 3 jest rodzicem podstrony 1 i tutaj tworzy się dropdown. Problem jest taki, że teraz podstrona1 nie usunie się z pierwszej pozycji menu bo pętla jest zakończona. Czy można jakoś to rozwiązać w Django? Bo jedyne co przyszło mi do głowy to usunięcie JSem duplikacji podstron w menu.
nav.html
{% for subpage in subpage_sorted %}
<li class="nav-item {% if subpage.parent %}dropdown{% endif %}">
<a class="nav-link {% if subpage.parent %}dropdown-toggle{% endif %}" href="{% url 'generated_page' subpage.slug %}" {% if subpage.parent %}data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"{% endif %}>{% trans subpage.title %}</a>
{% if subpage.parent %}
<div class="dropdown-menu">
<a class="dropdown-item" href="{% url 'generated_page' subpage.parent.slug %}">{% trans subpage.parent.title %}</a>
{% endif %}
</li>
{% endfor %}
model Subpage
class Subpage(models.Model):
title = models.CharField('Nazwa podstrony', max_length=254)
slug = models.SlugField('Przyjazny url', unique=True)
is_active = models.BooleanField('Jest aktywna', default=True)
display_order = models.IntegerField('Kolejność wyświetlania w menu', default=1)
parent = models.ForeignKey('self', verbose_name='Jest rodzicem:', on_delete=models.CASCADE, null=True, blank=True)