我有以下型号:
class Category(models.Model):
name = models.CharField(max_length=255)
parent = models.ForeignKey("self", blank=True, null=True)
class Meta:
verbose_name = _("category")
verbose_name_plural = _("categories")
def __unicode__(self):
return self.name
class Item(models.Model):
name = models.CharField(max_length=100, verbose_name=_("name"))
keywords = models.CharField(max_length=255, verbose_name=_("keywords"))
category = models.ForeignKey(Category)
class Meta:
abstract = True
verbose_name = _('item')
verbose_name_plural = _('items')
class Product(Item):
price = models.DecimalField(decimal_places=2, max_digits=8, verbose_name=_("price"))
brand = models.ForeignKey(Brand, verbose_name=_("brand"))
article_number = models.CharField(max_length=255, verbose_name=_("article_number"))
def __unicode__(self):
return self.name
class Meta:
verbose_name = _('product')
verbose_name_plural = _('products')
假设我在数据库中有以下类别:
ID NAME PARENT_ID
1 Products null
2 Phones 1
3 iPhones 2
我可以通过执行以下操作获得顶级类别:
#This is a product with the category "iPhones"
product.category.parent.parent
但这并不好,因为一个产品可以是 x 个类别的深度。
如何获取数组或其他内容中的所有相关类别?
Wanted output = [iPhones, Phones, Products]