Как сделать модель для подкатегории и категории для товара в django?
Мне нужно сделать модель продукта в django, где когда мы выбираем главную категорию, которая является внешним ключом, мы должны выбрать подкатегорию, проблема в том, что она будет показывать все подкатегории. она должна показывать подкатегории в соответствии с выбранной главной категорией
Модель основной категории
Здесь у нас только три поля
class Category(models.Model):
image = models.ImageField(upload_to="maincategory",null=True)
icon = models.CharField(max_length=200,null=True)
title = models.CharField(max_length=200,null=True)
def __str__(self):
return self.title
Модель подкатегории
здесь мы указываем Главную категорию в качестве foreignkey
class SubCategory(models.Model):
main_category = models.ForeignKey(Category,on_delete=models.CASCADE)
title = models.CharField(max_length=200,null=True)
def __str__(self):
return self.main_category.title + " - " + self.title
Модель продукта
В модели продукта я дам два внешних ключа для главной и подкатегории
maincategory = models.ForeignKey(Category,on_delete=models.CASCADE,null=True,blank=True)
subcategory = models.ForeignKey(SubCategory,on_delete=models.CASCADE,null=True,blank=True)
class Product(models.Model):
sts = (
("PUBLISH","PUBLISH"),
("DRAFT","DRAFT"),
)
vendor = models.ForeignKey(Vendor,on_delete=models.CASCADE)
maincategory = models.ForeignKey(Category,on_delete=models.CASCADE,null=True,blank=True)
subcategory = models.ForeignKey(SubCategory,on_delete=models.CASCADE,null=True,blank=True)
title = models.CharField(max_length=200,null=True)
description = models.TextField()
price = models.IntegerField(null=True,default=0)
discount = models.IntegerField(null=True,default=0)
stock = models.IntegerField(null=True,default=0)
size = models.CharField(max_length=200,null=True,blank=True)
color = models.CharField(max_length=200,null=True,blank=True)
date = models.DateTimeField(auto_now_add=True)
slug = AutoSlugField(populate_from='title',unique=True,null=True,default=None)
status = models.CharField(choices=sts,null=True)
def __str__(self):
return self.vendor + " - " + self.title
Как создать модель, в которой в админ панели django
выбирается подкатегория в соответствии с основной категорией.Если все, что вы хотите сделать, это иметь вложенные подкатегории, вы можете посмотреть на django mptt django-mptt
или вы можете следовать этой статье в блоге simpleit
существует учебник по категориям с использованием django mptt. также вы можете дополнительно настроить django mptt, чтобы ограничить его глубину.