我想创建一个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类。但是,我想通过允许类别为自己的子类别来使代码更灵活。然后我可以拥有无限数量的父母/子女。有人可以建议我怎么做到这一点吗?
答案 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)