【问题标题】:How to add sub category in models.py django [duplicate]如何在models.py django中添加子类别[重复]
【发布时间】:2018-11-29 18:53:18
【问题描述】:

我正在尝试创建一个博客,其中一个类别可能有一些子类别。 我在我的 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}"

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

【问题讨论】:

    标签: python django


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      好吧,你所做的并没有错,但是如果你想在同一张桌子上做,你可以在 charfield 上使用选择。

          YEAR_IN_SCHOOL_CHOICES = (
          (FRESHMAN, 'Freshman'),
          (SOPHOMORE, 'Sophomore'),
          (JUNIOR, 'Junior'),
          (SENIOR, 'Senior'),
          )
          sub_cat = models.CharField(choices=YEAR_IN_SCHOOL_CHOICES)
      

      您可以了解更多关于选择here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-14
        • 2016-10-27
        • 1970-01-01
        • 1970-01-01
        • 2015-06-07
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多