使用Django模型创建子类别

时间:2012-06-26 02:53:50

标签: python django models categories

我正在努力扩展我的Django模型中的关系。我有一个系统,其中元素存储在类别中。如何构建我的models.py以使每个类别与子类别相关?

以下是我的类别模型:

class Category(models.Model):
   site = models.ForeignKey(Site)
   template_prefix = models.CharField(max_length=200, blank=True)
   name = models.CharField(max_length=200)
   slug = models.SlugField() 
   description = models.TextField(default='')
   sortby_fields = models.CharField(max_length=200,
                                 help_text=_(u'A comma separated list of field names that should show up as sorting options.'),
                                 blank=True)
   sort_order = models.PositiveIntegerField(default=0)

   def __unicode__(self):
       return self.name + u' Category'

   class Meta:
       verbose_name_plural = u'categories'

感谢您的任何建议。

2 个答案:

答案 0 :(得分:17)

您可以为自己创建一个外键:

class Category(models.Model):
   ...
   parent_category = models.ForeignKey('self', null=True, blank=True)

然后,您可以将任何现有的Category实例指定为该实例的parent_category。然后,如果您想查找给定Category实例的所有子类别,您可以执行以下操作:

subcategories = Category.objects.filter(
    parent_category__id=target_category.id)

答案 1 :(得分:1)

您也可以尝试django-mptt。它还有一些额外的功能。