VariableDoesNotExist в /list/ сбой поиска ключа [узлов] в u»[

#python #django #django-mptt

#python #django #django-mptt

Вопрос:

У меня проблема с Django MPTT, мои модели

 class Catalog(MPTTModel):
name = models.CharField(verbose_name='name',max_length=256,blank=True  )
name_slug = models.CharField(verbose_name='Name_slug',max_length=250,blank=True)
parent = TreeForeignKey('self',null=True,blank=True,related_name='children')

class MPTTMeta:
    order_insertion_by = ['name']
def __unicode__(self):
    return u"%s %s %s " %(self.name,self.name_slug,self.parent)
def __str__(self):
    return u"%s %s %s " %(self.name,self.name_slug,self.parent
    def get_absolute_url(self):
        return reverse("catalog",kwargs={"slug":self.name_slug})
  

Теперь я использую MPTT в base.html , вот так:

 <ul class="root">
{% recursetree nodes %}
    <li>
        <a href="{{ node.get_absolute_url }}">{{ node.name }}</a>
        {% if not node.is_leaf_node %}
            <ul class="children">
                <a href="{{ children.get_absolute_url }}">{{ children }}</a>
            </ul>
        {% endif %}
    </li>
{% endrecursetree %}
  

Однако, когда я захожу на свою страницу с деревом mptt, я вижу:

 VariableDoesNotExist at /list/
Failed lookup for key [nodes] in u"[{'False': False, 'None': None, 'True': True}, {}, {}, {'places': <QuerySet [<Place: u041bu044cu0432u0456u0432 lvv u0441u0456u0456u0441u0441u0456u0441u0456u0456u0441 list.Catalog.None >, <Place: u0421u043au0430u043bu0430u0442 skalat u0421u043au0430u043bu0430u0442 list.Catalog.None >]>}]"
  

Можете ли вы сказать мне, в чем моя проблема?

Комментарии:

1. Можете ли вы поставить под сомнение свои взгляды ?

Ответ №1:

Не забывайте, что в примере {% recursetree nodes %} nodes это фактически имя переменной шаблона ваших категорий.

Итак, если вы views.py отправляете объект categories в шаблон as categories , тогда вам нужно использовать {% recursetree categories %} вместо этого.

Внутри recursetree блока node жестко закодирован для отдельного узла дерева и children жестко закодирован для дочерних элементов этого узла, но nodes это просто пример имени переменной шаблона.