简单的Django模型设计概念......需要输入吗?

时间:2013-11-17 02:10:18

标签: django

我有一个简单的产品数据库,其中包含以下内容:

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?

2 个答案:

答案 0 :(得分:1)

将其放入产品:

category = models.ForeignKey(Category, related_name='%(class)s_set')

您可以详细了解外键here

答案 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()