Django 模型:对象是另一个对象的后代吗?



我有一个模型类别。类别可以有一个类别和多个子类别- 如树结构。它们都是类别对象。

我正在尝试创建一种方法来告诉我 self 是否是给定类别的后代。现在,它可以说它是否是一个孩子,但我也想检测孙子,孙子等。

你知道如何让它工作吗?是否有一些内置工具?

class Category(models.Model):
name = models.CharField(max_length=1000)
url = models.URLField(max_length=1000)
supercategory = models.ForeignKey('Category',null=True,blank=True)
def is_subcategory(self,category):
if self.supercategory == category:
return True
def __unicode__(self):
return self.name

您可以使用递归来实现此目的。 递归是编程中的一般概念,基本上是函数调用自身时。

在这里你可以做:

def is_subcategory(self,category):
if self.supercategory is None:
return false
return (self.supercategory == category or 
self.supercategory.is_subcategory(category))

这样做的危险之处在于,如果类别育儿中存在循环,则进行无限堆栈调用。

最新更新