Python django中的类别和子类别

Python django中的类别和子类别,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我有一个实体的产品,类别和子类别。一个类别可以有许多产品,一个类别也可以有许多子类别。例如,一款名为Iphone-4的产品可能属于电子和小工具类别的智能手机子类别。类似的三星产品可以归入同一智能手机子类别的电子和小工具类别。我怎样才能有效地展示这种关系 这就是我所做的 class Category(models.Model): name = models.CharField(max_length=80, null=True) parent = models.ForeignKey(

我有一个实体的产品,类别和子类别。一个类别可以有许多产品,一个类别也可以有许多子类别。例如,一款名为Iphone-4的产品可能属于电子和小工具类别的智能手机子类别。类似的三星产品可以归入同一智能手机子类别的电子和小工具类别。我怎样才能有效地展示这种关系

这就是我所做的

class Category(models.Model):
    name = models.CharField(max_length=80, null=True)
    parent = models.ForeignKey('self', blank=True, null=True, related_name="children")

    class Meta:
        unique_together = ('parent',)
        verbose_name = 'Category'
        verbose_name_plural = 'Categories'

class Product(models.Model):
    token = models.CharField(default=token_generator, max_length=20, unique=True, editable=False)
    category = models.ForeignKey(Category)
    company = models.ForeignKey(Company, related_name="company_product")
    name = models.CharField(max_length=200, null=True)
    model = models.CharField(max_length=100, blank=True, null=True)
    specification = models.TextField(null=True, blank=True)
    price = models.PositiveIntegerField(default=0)
管理员

class ProductAdmin(admin.ModelAdmin):
    list_select_related = ('category', 'company',)
    class Meta:
        model = Product

class CategoryAdmin(admin.ModelAdmin):
    list_select_related = ('parent',)
    list_display = ('name', 'parent', )
    class Meta:
        model = Category
这样,在我的管理中,类别和子类别显示得非常模糊。类别电子产品和小工具显示多次。根据属于该类别的子类别的数量显示。 这是预期的行为还是必须以其他有效方式处理


您必须在第一列中列出级别为-1的类别,然后在第二列中列出以逗号分隔的子类别。您也可以在第二列中只显示一个子类别,然后创建一个链接以显示所有子类别及其子类别,依此类推。我必须在admin.py中执行这些操作吗?你能给我看一些小东西或伪代码吗?我对python知之甚少。您必须在级别-1对所有类别进行分页,然后使用子查询获取所有子类别。