В шаблонизировании Django, если текстовое поле в одной модели совпадает с текстовым полем в другой, добавить в список не удалось по соответствующим значениям - PullRequest
0 голосов
/ 07 апреля 2019

Я создаю вложенную панель навигации, используя 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 часов.

...