我有一个定义类别列表的Django模型。每个类别都可以是另一个类别的子类别,而且这个类别列表的深度可能会持续相当长的时间。在
模型.py
class Category(models.Model):
code = UUIDField(unique=True, primary_key=True)
name = models.CharField(max_length=100, null=True, blank=True, unique=True)
parent_cat = models.ForeignKey('self', null=True, blank=True)
例如,考虑一个女装类别。它可能有如下内容:
女装>;连衣裙>;夏季
这一切都很好,但是我想单独构建一个函数,它可以构建一个包含树中每个类别的外推视图的列表。为此,我写了以下内容:
^{pr2}$我意识到这段代码可能相当草率,我还在学习!在
正如你可能意识到的,这只会给我两个层次的子对象。在
我的问题是:我可以用什么最有效的方法来编写这段代码,这样它就可以找到所有可能的类别,直到它到达最后一个没有子对象的对象为止?在
谢谢!!在
您正在寻找https://en.wikipedia.org/wiki/Tree_traversal-并且可以使用django mptt包:https://django-mptt.github.io/django-mptt/overview.html#what-is-modified-preorder-tree-traversal
你可以试着使用递归,大致如下: 将list替换为apppriate数据类型。在
相关问题 更多 >
编程相关推荐