我有一个简单的产品数据库,其中包含以下内容:
class Product(models.Model):
sku = models.CharField(max_length=200)
name = models.CharField(max_length=200)
price = models.CharField(max_length=200)
class meta:
abstract = True
class Shoe(Product): #inherits from product
size = models.CharField(max_length=200)
class Computer(Product): #inherits from product
cpu = models.CharField(max_length=200)
这会在DB ... Shoe and Computer中留下2个表。现在如果我想按类别组织它们怎么办?就像拥有一个具有良好的人类可读名称的Category模型,一个用于在产品下拉菜单中显示的图标等。我迷路了!鞋子和计算机是不同的模型......那么一个模型(类别)如何组织它们呢?
HALP?
答案 0 :(得分:1)
答案 1 :(得分:1)
也许您可以使用Generic Foreign Keys
class Category(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
name = models.charField(max_length=50)
class Product(models.Model):
categories = generic.GenericRelation(Category)
我不太清楚您对类别的想法,但您可以创建引用任何对象的新类别,计算机或鞋子
shoe = Shoe.object.get(pk=1)
category = Category(content_object=shoe, name='tennis')
category.save()
category = Category(content_object=shoe, name='waterproof')
category.save()
shoe.catetories.all()