【发布时间】:2015-11-11 22:19:27
【问题描述】:
我有以下 Django 模型将稀疏的产品数据存储在关系数据库中。对于以下代码中的任何错误关系,我深表歉意(ForeignKey 和/或 ManyToMany 可能放置错误,我现在只是在玩 Django)。
class ProdCategory(models.Model):
category = models.CharField(max_length=32, primary_key=True)
class ProdFields(models.Model):
categoryid = models.ForeignKey(ProdCategory)
field = models.CharField(max_length=32)
class Product(models.Model):
name = models.CharField(max_length=20)
stock = models.IntegerField()
price = models.FloatField()
class ProdData(models.Model):
prodid = models.ManyToManyField(Product)
fieldid = models.ManyToManyField(ProdFields)
value = models.CharField(max_length=128)
这个想法是将每个产品的 name、stock 和 price 存储在一个表中,并将每个产品的信息存储在 ( id, value) 格式在另一个表中。
我事先知道每个产品类别应具有的字段。例如,一个 Desktop 类型的产品应该有 memory size 和 storage size 作为字段,而另一个 类别的产品>Monitor 应该有 resolution 和 screen size 作为字段。
我的问题是:在 Django 中,我如何保证每个产品只包含其类别的字段?更准确地说,在指定Monitor 类别的产品时,如何确保ProdData 表中只有resolution 和screen size 是字段?
我发现了一个类似的问题Django: Advice on designing a model with varying fields,但没有关于如何保证上述问题的答案。
提前谢谢你。
【问题讨论】:
标签: python django entity-attribute-value