我的这个类在我的Django模型中有一个自引用外键
@python_2_unicode_compatible
class Category(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=100)
parent = models.ForeignKey('Category', blank=True, null=True)
def cadena(self):
if self.parent is None:
return self.name
else:
return self.cadena(self.parent) + ' - ' + self.name
def __str__(self):
return self.cadena()
我希望获得一个包含此类别父级的字符串,其方法为“cadena”,如下所示:
Cat - SubCat - SubSubCat
使用此代码
c = Category.objects.get(id=12)
print c.cadena()
我收到了这个错误:
TypeError: cadena() takes exactly 1 argument (2 given)
有什么问题?为什么这个错误为2给定的参数?
答案 0 :(得分:3)
要为父级调用cadena
方法,您应该调用self.parent.cadena()
。这将修复TypeError
。
def cadena(self):
if self.parent is None:
return self.name
else:
return self.parent.cadena() + ' - ' + self.name