在Django模板中,如果一个模型中的文本字段与另一个模型中的文本字段匹配,则添加到列表中的值将不成功

时间:2019-04-06 22:47:50

标签: django-models django-templates django-views logic

我正在使用Django模板创建嵌套的导航栏。有主要的“导航”和嵌套列表的项称为“ Navsubitem”。当我尝试根据子项列表是否具有与任何主要导航项中的文本字段匹配的字段“ mainitem”对子项列表进行排序时,我会得到一个空白列表,好像它在所有子项上进行迭代并返回一个空白字符串,即使值匹配也是如此。代码中的逻辑看起来正确,但是输出错误,并且我已经耗尽了我的想法。

我尝试移动

  

{导航项目中子项目%的%}   在无序列表标记之外(并且还将if语句移出if语句)标记。尽管我认为只将for语句移到list标记之外,但将无序list标记移到里面是更好的选择,但是仍然没有文本。尽管如此,这些结果会产生不同但仍然不理想的结果。

#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中,在每个导航下,我得到的空白行数是Navsubitems中的对象,没有文本,没有href。

由于我已经在导航栏上进行了24小时的工作,因此对此有进一步的了解。

0 个答案:

没有答案