Creating SubCategories with Django Models
categories, django, models, python
Solution
You can create a foreign key to itself:
class Category(models.Model):
...
parent_category = models.ForeignKey('self', null=True, blank=True)
Then you can assigning any existing `Category` instance as the `parent_category` of that instance. Then, if you wanted to find all of the subcategories of a given `Category` instance you would do something like:
subcategories = Category.objects.filter(
parent_category__id=target_category.id)
Problem
I am trying to expand the relationships within my Django Models. I have a system where elements are stored within Categories. How do I structure my `models.py` so that each category is related to a subcategory? Here is what my category model looks like: ``` 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' ``` Thanks for any suggestions.