为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2021-04-06 17:14:45
我正在尝试创建一个博客,其中一个类别可能包含一些子类别。我在我的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}"但是我认为为同一任务创建两个不同的类是不正确的。那么还有其他方法可以做到吗?谢谢你。
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

您可以尝试使用自引用的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()


查看完整回答
反对 回复 2021-04-09
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

好吧,您所做的没错,但是如果您想在同一张表上执行此操作,则可以在charfield上使用choice。


    YEAR_IN_SCHOOL_CHOICES = (

    (FRESHMAN, 'Freshman'),

    (SOPHOMORE, 'Sophomore'),

    (JUNIOR, 'Junior'),

    (SENIOR, 'Senior'),

    )

    sub_cat = models.CharField(choices=YEAR_IN_SCHOOL_CHOICES)


查看完整回答
反对 回复 2021-04-09
  • 2 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号