#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
это просто пример имени переменной шаблона.