当根类别具有相同的子类别时,如何在django中实现类别/子类别?

时间:2014-10-23 07:26:53

标签: python django database django-models categories

我有这个型号项目:

class Item(CustomBaseModel):
    name = models.CharField(max_length=100)

每个项目属于特定类别,可以是另一个类别的子类别。简而言之,类别将如下所示:

Men
    accessories
    clothing
        tops
        jeans
    sportswear
Women
    accessories
    clothing
        skirt
        pyjamas
    sportswear

因此,根类别(男性,女性)将具有相同的子类别。

我已经阅读了很多资源并尝试了以下内容:

第一次尝试:

分类表

id | name        | parent_id
 1 | Men         |
 2 | Women       | 
 3 | accessories | 1
 4 | clothing    | 1
 5 | tops        | 4

此方法存在问题:

  • 我需要男士和女士的配饰。我将不得不在这里复制配件。

  • 我认为

  • 稍后会对此表进行查询

第二次尝试:

我尝试使用django-taggit。它作为标签工作得很好。

此方法存在问题:

  • 标签不是类别。没有类别/子类别,与标签的父/子关系。

实现此类别/子类别关系的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

不要让男人和女人成为一个类别。配饰,服装和运动服是根类别。

男人和女人是产品的属性(可能是男女皆宜的 - 所以做出性别多重选择)。

然后在模板中对男人和女人(甚至是孩子)进行硬编码 - 很快就会有更多的性别 - 并且仅显示包含该性别产品的类别。

答案 1 :(得分:1)

添加字段

parent = models.ManyToManyField("self", null=True, blank=True)