我希望对我的参赛作品进行分类,抓住的是我想要的多个级别的类别。一个例子:
css
layout
floats
specificity, selectors
html
html 5
在此示例中,css
和html
是父类别,css有2个子级,layout
的子级为floats
。
我想我需要的架构是
class Category:
name = models.TextField()
parentId = models.IntegerField(blank=True)
我无能为力的是,如何在管理员中制作多级下拉列表,以便在发布条目时我可以轻松选择一个类别?
重申一下,我如何能够生成多级嵌套下拉菜单,这样当我在Entry模型中输入内容时,我可以为每个条目选择一个类别?
答案 0 :(得分:5)
您的问题似乎与您所说的略有不同。这里的问题不是关于如何显示层次结构,这很简单:
def __unicode__(self):
return self.depth * " "
无赖是如何捕获和显示层次/深度。这是一个常见问题:将树存储在realational数据库中。像往常一样,您的解决方案取决于写入/读取重量与标准化量之间的权衡。例如,您可以在模型的“保存”方法上递归地到达根,并从那里在节点上存储“深度”属性。我的建议是使用django mptt。它非常稳固,解决了许多正常的障碍。作为奖励,您可以获得常见树任务的良好API。