gpt4 book ai didi

python - django 中的类别和子类别

转载 作者:行者123 更新时间:2023-12-05 07:42:48 24 4
gpt4 key购买 nike

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

这是我做的

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)

管理员.py

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

这样在我的管理中,类别和子类别显示得如此模糊。多次显示类别电子产品和小工具。它根据属于该类别的子类别的数量显示。这是预期的行为还是必须以其他有效方式处理?

enter image description here

最佳答案

这是在管理面板中列出嵌套类别和子类别的代码片段。请先在您的应用程序的 admin.py 中注册类别模型。

# Category Model.
class Category(models.Model):
name = models.CharField(blank=False, max_length=200)
slug = models.SlugField(null=False)
parent = models.ForeignKey('self',blank=True, null=True ,related_name='children', on_delete=models.SET_NULL)

class Meta:
db_table = "dj_categories"
# Add verbose name
verbose_name = 'Category'
verbose_name_plural = "Categories"
unique_together = ('slug', 'parent',)

def __str__(self):
return self.name

关于python - django 中的类别和子类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44213309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com