Python 使用Django构建“无限”菜单树

Python 使用Django构建“无限”菜单树,python,django,recursion,django-models,django-templates,Python,Django,Recursion,Django Models,Django Templates,我有一个模型: menuName = models.CharField(max_length=50) menuAlias = models.CharField(max_length=50, unique=True, validators=[aliasvalidator]) published = models.BooleanField() parentId = models.IntegerField() 并希望构建一个模板,其中包含每个条目具有无限父子关系的菜单,其中第一级元素的父id

我有一个模型:

 menuName = models.CharField(max_length=50)
 menuAlias = models.CharField(max_length=50, unique=True, validators=[aliasvalidator])
 published = models.BooleanField()
 parentId = models.IntegerField()

并希望构建一个模板,其中包含每个条目具有无限父子关系的菜单,其中第一级元素的父id为0。因此,我可以构建任何我想要的html菜单树。

不要再发明轮子;使用专用的Django扩展来构建树结构。有几个软件包可以实现一个

其中最主要的是,;这将使您的菜单构建更加简单和高效:

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)