2015-10-04 105 views
2

我试图在Django中创建无限嵌套类别树。Django中无限递归/嵌套类别树

class Category(models.Model): 
    ParentCategory = models.ForeignKey(Category, blank=True) 
    Name = models.CharField(max_length=255) 

这里的想法是,所有类别没有ParentCategory是主要的(0级)。所有ParentCategory从0级开始的都是1级,依此类推。

这里唯一的问题是,我不能引用Category的自身内部。返回的错误是很明显:NameError: name 'Category' is not defined在第3行

我该如何解决这个问题?可能吗?

回答

4

由于模型尚未在被定义的字段时创建的,你可以使用self为参照同型号:

class Category(models.Model): 
    parent = models.ForeignKey('self', blank=True, null=True) 
    name = models.CharField(max_length=255) 
+0

非常感谢您的帮助,我会尽力现在。 – Saturnix

+0

似乎工作!唯一的“问题”是你不能将'不可空字段'ParentCategory'添加到没有默认值的类别。添加'default = None'将会修复它。 如果你同意,我建议你编辑答案,包括这一点。 – Saturnix