Итак, я использую Django-mptt, чтобы установить древовидную структуру в моей базе данных, затем я хотел бы просмотреть дерево и отобразить объекты в виде структуры дерева html.Однако всякий раз, когда я использую в своем шаблоне вызов {% recursetree Architecture%}, он отображает только объекты Architecture.Я надеялся найти способ перебрать дерево, отображающее каждый узел.Любая помощь приветствуется.
models.py
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
class Architecture(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='Children')
class MPTTMeta:
order_insertion_by = ['name']
class Vehicle(MPTTModel):
name = models.CharField(max_length=50, unique=True)
mass = models.IntegerField()
parent = TreeForeignKey('Architecture', on_delete=models.CASCADE, null=True, blank=True, related_name='Systems')
class MPTTMeta:
order_insertion_by = ['name']
class System (MPTTModel):
name = models.CharField(max_length=50, unique=True)
mass = models.IntegerField()
parent = TreeForeignKey('Vehicle', on_delete=models.CASCADE, null=True, blank=True, related_name='SubSystems')
class MPTTMeta:
order_insertion_by = ['name']
class SubSystem(MPTTModel):
name = models.CharField(max_length=50, unique=True)
mass = models.IntegerField()
parent = TreeForeignKey('System', on_delete=models.CASCADE, null=True, blank=True)
class MPTTMeta:
order_insertion_by = ['name']
class Mission(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('Architecture', on_delete=models.CASCADE, null=True, blank=True, related_name='Events')
class MPTTMeta:
order_insertion_by = ['name']
class Event(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('Mission', on_delete=models.CASCADE, null=True, blank=True)
class MPTTMeta:
order_insertion_by = ['name']
views.py
from django.shortcuts import render
from dyreqt_UX.models import Architecture, SubSystem
from django.http import HttpResponse
def show_tree(request):
return render(request, 'dyreqt_UX/tree.html', {'Architecture': Architecture.objects.all})
tree.html
{% load mptt_tags %}
<ul class="root">
{% recursetree Architecture %}
<li>
{{ node.name }}
{% if not node.is_leaf_node %}
<ul class="Children">
{{ Children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}