Проблема с выводом меняю с помощью django mptt. В админке вывод верный, что показано на рисунке ниже, но на сайте вывод не соответствует тому, что в админке.
Вывод на сайте
Вывод в админке:
Как видно, проблемы не только на верхнем уровне, но и ниже (фруктовницы и конфетницы в категории предметов интерьера)
Вывод происходит так:
{% recursetree menu %}
<li>
{% if node.level == 0 %}
<a href="{{ node.get_absolute_url }}" title="{{ node.name }}" class="menu-item">{{ node.name }}</a>
{% else %}
<a href="{{ node.get_absolute_url }}" title="{{ node.name }}">{{ node.name }}</a>
{% endif %}
{% if not node.is_leaf_node %}
{% if node.level < 1 %}
<ul class="base-list">
{{ children }}
</ul>
{% else %}
<ul>
{{ children }}
</ul>
{% endif %}
{% endif %}
</li>
{% endrecursetree %}
Сама модель выглядит следующим образом:
class Category(CreationModificationDateMixin, MetaTagsMixin, MPTTModel):
parent = TreeForeignKey(
'self',
null=True,
blank=True,
verbose_name='Родительская категория',
related_name='children'
)
name = models.CharField(
'Название',
max_length=100
)
slug = models.SlugField(
'Название в URL',
max_length=100,
)
available = models.BooleanField(
'Отображать на сайте?',
default=True
)
image = models.ImageField(
'Загрузить изображение',
upload_to=RandomFileName('images/categories'),
blank=True
)
description = models.TextField(
'Описание',
blank=True,
null=True
)
position = models.PositiveIntegerField(
'Позиция при выводе',
default=0
)
# Managers
objects = models.Manager()
accessable = AccessableManager()
tree = TreeManager()
class Meta:
verbose_name = 'Категория'
verbose_name_plural = 'Категории'
class MPTTMeta:
order_insertion_by = ['position', 'name']
def __str__(self):
return "{}".format(self.name)
def get_absolute_url(self):
return reverse('category:category', kwargs={'slug': self.slug, 'id': self.id})
При помощи менеджера tree использовал функцию rebuild, но все только ломалось и возникала ошибка с уровнями вложенности.
Можно как-то решить данную проблему?