django中的多级层次结构下拉列表?

时间:2010-06-21 23:08:12

标签: django django-admin

我希望对我的参赛作品进行分类,抓住的是我想要的多个级别的类别。一个例子:

css
    layout
          floats
    specificity, selectors
html
    html 5

在此示例中,csshtml是父类别,css有2个子级,layout的子级为floats

我想我需要的架构是

class Category:
    name = models.TextField()
    parentId = models.IntegerField(blank=True)

我无能为力的是,如何在管理员中制作多级下拉列表,以便在发布条目时我可以轻松选择一个类别?

重申一下,我如何能够生成多级嵌套下拉菜单,这样当我在Entry模型中输入内容时,我可以为每个条目选择一个类别?

1 个答案:

答案 0 :(得分:5)

您的问题似乎与您所说的略有不同。这里的问题不是关于如何显示层次结构,这很简单:

def __unicode__(self):  
    return self.depth * " "

无赖是如何捕获和显示层次/深度。这是一个常见问题:将树存储在realational数据库中。像往常一样,您的解决方案取决于写入/读取重量与标准化量之间的权衡。例如,您可以在模型的“保存”方法上递归地到达根,并从那里在节点上存储“深度”属性。我的建议是使用django mptt。它非常稳固,解决了许多正常的障碍。作为奖励,您可以获得常见树任务的良好API。