【问题标题】:Building 'limitless' menu trees with Django使用 Django 构建“无限”菜单树
【发布时间】:2014-01-12 01:49:59
【问题描述】:

我有一个模型:

 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 菜单树。

【问题讨论】:

    标签: python django recursion django-models django-templates


    【解决方案1】:

    不要重新发明轮子;使用专用的 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)
    

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多