我将如何创建一个名为Category的Django模型,该模型可以与自身相关(以创建子类别)

时间:2010-12-15 15:46:02

标签: django django-models

我想创建一个Category类,它可能有也可能没有子类别,或者它本身可能是也可能不是另一个Category对象的子类。

这不起作用,但它让我知道我正在尝试做什么:

class Category(models.Model):  
    about = models.TextField(blank=True)
    parent_cat = models.ForeignKey(Category, blank=False, null=True)
    slug = models.SlugField(unique=True, help_text = SLUG_HELP)    
    title = models.CharField(max_length = 26, unique=True)

...

现在有效的是我有一个可以与类别相关的SubCategory类。但是,我想通过允许类别为自己的子类别来使代码更灵活。然后我可以拥有无​​限数量的父母/子女。有人可以建议我怎么做到这一点吗?

2 个答案:

答案 0 :(得分:8)

您对子类和继承的引用令人困惑。你有一个标准的递归关系,通过ForeignKey工作正常。您唯一需要做的就是定义FK as described in the documentation

parent_cat = models.ForeignKey('self', blank=False, null=True)

您发布的代码还有什么“不起作用”?

答案 1 :(得分:2)

您可以使用我的模型作为示例。我使用django-mptt在前端渲染树列表视图。

Including foreign key count in django mptt full tree listing?

class Category ( models.Model ):
    name = models.CharField( max_length=100 )
    parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
    slug = models.SlugField(unique=True)

mptt.register(Category)