Я создаю вложенную панель навигации, используя Django Templating.Существуют основные «navitems» и элементы для вложенного списка под названием «Navsubitem».Когда я пытаюсь отсортировать список подэлементов по наличию у них поля «mainitem», которое соответствует текстовому полю в любом из основных элементов навигации, я получаю пустой список, как будто он перебирает все подэлементы и возвращаетпустая строка, даже если значения совпадают.Логика в коде выглядит правильно, но вывод неправильный, и я исчерпал свои идеи.
Я попытался переместить
{% для подпункта в navsubitems%} вне тега неупорядоченного списка (а также перемещения оператора if из оператора if).Они приводят к другим, но все же нежелательным результатам, хотя я думаю, что перемещение только оператора for вне тега списка, но внутри тега неупорядоченного списка, является лучшим вариантом, но все еще без текста.
#models.py
class Navitem(models.Model):
text = models.TextField(null=True, blank=True, max_length=100, unique=True)
tip = models.TextField(max_length=20, default="Take Action", unique=False)
href = models.URLField()
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.text
class Navsubitem(models.Model):
mainitem = models.ForeignKey('Navitem', on_delete=models.CASCADE,)
text = models.TextField(null=True, blank=True, max_length=100, unique=True)
href = models.URLField()
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.text
#views.py
navitems=Navitem.objects.order_by('text')
navsubitems=Navsubitem.objects.order_by('text')
{# Nav Bar #}
<ul>
{% for item in navitems %}
<li>
<a href="{{ item.href }}">{{ item.text }}</a><br>
<ul>
<li>
{% for subitem in navsubitems %}
{% if subitem.mainitem == item.text %}
<a href="{{ subitem.href }}">{{ subitem.text }}</a>
{% endif %}
{% endfor %}
</li>
</ul>
</li>
{% endfor %}
</ul>
В выходном html под каждым navitem я получаю количество пустых строк в виде объектов в Navsubitems, без текста и без ссылки.
Любое дальнейшее понимание этого будет оценено, так как яВ этот момент мы работали над этой панелью навигации в течение 24 часов.