我有一个模特:
menuName = models.CharField(max_length=50)
menuAlias = models.CharField(max_length=50, unique=True, validators=[aliasvalidator])
published = models.BooleanField()
parentId = models.IntegerField()
并且想要构建一个模板,其中包含每个entrie的无限父子关系的菜单,其中“first-level”元素的父ID是0.并且因此构建我想要的任何html菜单树。
答案 0 :(得分:0)
不要重新发明轮子;使用专用的Django扩展来构建树结构。有几个可用的包实现Modified Preorder Tree Traversal model。
其中主要是django-mptt;它将使您的菜单构建更加轻松和高效:
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
class Menu(MPTTModel):
menuName = models.CharField(max_length=50)
menuAlias = models.CharField(max_length=50, unique=True, validators=[aliasvalidator])
published = models.BooleanField()
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)