繁体   English   中英

如何在 django 中为产品的子类别和类别制作模型?

[英]How to make model for sub-category and category for product in 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

子类别模型

这里我们将 Main 类别作为外键

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 以限制其深度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM