Я пытаюсь создать модель, которая имеет вложенные уровни категорий.Как добавить вложенные категории в модель Django?
Уровни такие.
category0 > category1 > category2 > category3 > category4 > category5
Сообщение может иметь уровни от 0 - 5
, поэтому пост может иметь категорию 0 - 1
, в то время как другой пост может иметь 0 - 4
или 0 - 5
,
категорию на данный высоком уровне (0
является ниже, а 5
является наивысшим) следует унаследовать от того, что находится под ним, (1 > 2 > 3 > 4 > 5
)
Как я могу достичь этого?
Мои нынешние категории выглядит следующим образом
class Category0(models.Model):
name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=60)
class Category1(models.Model):
name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=60)
parent = models.ForeignKey(Category0)
class Category2(models.Model):
name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=60)
parent = models.ForeignKey(Category1)
class Category3(models.Model):
name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=60)
parent = models.ForeignKey(Category2)
class Category4(models.Model):
name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=60)
parent = models.ForeignKey(Category3)
class Category5(models.Model):
name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(max_length=60)
parent = models.ForeignKey(Category4)
И пост модели здесь
class Product(models.Model):
title = models.CharField(max_length=20)
slug = AutoSlugField(unique=True, populate_from='title')
content = models.TextField(blank=True)
category = models.ForeignKey(CategoryChild4)
Что бы лучший метод? любые предложения или изменения приветствуются.
Update
Бэкэнд является PostgrSQL.
Благодаря
посмотрите на [django-mptt] (https://github.com/django-mptt/django-mptt/) –