Все правильно, под mptt нужно менять модель.
У меня была похожая задача, я долго пытался её решить сам, но потом разобрался с mptt и все проблемы ушли.
ну вот у меня есть модель которую я написала вначале, я ее маняю на
class Categories(MPTTModel):
category_id = models.BigAutoField(primary_key=True, verbose_name='Id')
name = models.TextField(verbose_name='Название')
comment = models.TextField(blank=True, null=True, verbose_name='Комментарий')
parent = TreeForeignKey('self', blank=True, null=True, related_name='child')
class MPTTMeta:
order_insertion_by = ['name']
class Meta:
db_table = 'categories'
verbose_name = 'категория'
verbose_name_plural = "Категории"
def __str__(self):
return self.name
view:
def main(request):
return render(request, "main.html",
{
'category': Categories.objects.all()
})
html:
{% load mptt_tags %}
<ul>
{% recursetree category %}
<li>
{{ node.name }}
{% if not node.is_leaf_node %}
<ul class="children">
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}
</ul>
в результате ошибка:
ОШИБКА: столбец categories.lft не существует