DjANGO Выборка по категориям (древовидная структура)
Подскажите как сделать чтобы при создание товара можно было выбрать по очерёдно категорию исходя от родителя. например мужское-обувь-кроссовки. или женское-обувь-кроссовки. не зная предварительно точно сколько будет подкатегории. 3 или 4
class Category(MPTTModel):
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
name = models.CharField(max_length=255, verbose_name='Имя категории')
slug = models.SlugField(unique=True)
image = models.ImageField(blank=True, null=True, verbose_name='Изображение')
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('category', kwargs={'slug': self.slug})
class Meta:
verbose_name = "Категория"
verbose_name_plural = "Категории"
class Product(models.Model):
STATUS_PRODUCT = (
('Publish', 'Опубликовать'),
('Not_to_publish', 'Не публиковать'),
)
status = models.CharField(max_length=30, choices=STATUS_PRODUCT, verbose_name='Статус')
name = models.CharField(max_length=255, verbose_name='Наименование')
slug = models.SlugField(unique=True, verbose_name='Ссылка')
description = models.TextField(verbose_name='Описание', null=True)
shortdescription = models.TextField(verbose_name='Короткое писание', null=True)
price = models.DecimalField(max_digits=9, decimal_places=2, verbose_name='Цена')
saleprice = models.DecimalField(max_digits=9, decimal_places=2, verbose_name='Цена по распродаже', null=True)
instock = models.IntegerField(verbose_name='В наличии', null=True)
image = models.ImageField(verbose_name='Изображение')
category = models.ForeignKey(Category, verbose_name='Категория', on_delete=models.CASCADE)
def __str__(self):
return self.name
class Meta:
verbose_name = "Товар"
verbose_name_plural = "Товары"