【发布时间】:2018-04-13 13:45:55
【问题描述】:
我有一个类别的树结构。具有引用自身的外键的类别。
class Category(MetaData):
parent = models.ForeignKey('self', blank=True, null=True, verbose_name='parent category', on_delete=models.CASCADE)
name = models.CharField(max_length=255)
description = models.TextField()
因为我不知道分类树的深度(不能用于)我需要使用递归函数:
def cat_for_parents(self, cat_obj):
...
if cat_obj.parent_id:
p = cat_obj.parent
...
self.cat_for_parents(p)
但是我如何在模板中实现函数以获得这样的东西(理论上无限递归循环):
<ul>
<li>CategoryA
<ul>
<li>SubCategA1
<ul>
<li> Subcateg Subcateg B1
<ul>
<li> Subcateg SubCateg C1>
<li> Subcateg SubCateg C2>
<ul>
<li> Subcateg Subcateg B2>
.............
【问题讨论】:
-
你应该考虑使用 django-mptt 来解决这个问题;它包括用于有效存储和检索树数据的数据库结构,以及用于递归渲染它的模板标签。
-
@Daniel Roseman - 谢谢,我会检查他们的代码;我更喜欢在我需要的地方和方式做我自己的自定义东西,包括 Django 版本,而不是在这种情况下使用第三方
标签: django django-templates foreign-keys