如何在models.py django中添加子类别

我正在尝试创建一个博客,其中一个类别可能包含一些子类别。我在我的models.py中做到了


class Category(models.Model):

    title = models.CharField(max_length=50, unique=True)


    def __str__(self):

        return f"{self.title}"





class SubCategory(models.Model):

    category = models.ForeignKey(Category, on_delete=models.CASCADE)

    title = models.CharField(max_length=50, unique=True)


    def __str__(self):

        return f"{self.title}"

但是我认为为同一任务创建两个不同的类是不正确的。那么还有其他方法可以做到吗?谢谢你。


ITMISS
浏览 186回答 2
2回答

胡子哥哥

您可以尝试使用自引用的ForeignKey。class Category(models.Model):    title = models.CharField(max_length=50, unique=True)    parent_category = models.ForeignKey('self', related_name='sub_category')    def __str__(self):        return f"{self.title}"然后它将像这样工作: a_category = Category.objects.create(title='Parent category') Category.objects.create(title='subcategory', parent_category=a_category)并获得所有子类别,您可以执行以下操作:a_category.sub_category.all()

幕布斯7119047

好吧,您所做的没错,但是如果您想在同一张表上执行此操作,则可以在charfield上使用choice。    YEAR_IN_SCHOOL_CHOICES = (    (FRESHMAN, 'Freshman'),    (SOPHOMORE, 'Sophomore'),    (JUNIOR, 'Junior'),    (SENIOR, 'Senior'),    )    sub_cat = models.CharField(choices=YEAR_IN_SCHOOL_CHOICES)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python