我有以下Django模型來在關係數據庫中存儲稀疏產品數據。我爲自己在下面的代碼中的任何錯誤關係表示歉意(ForeignKey和/或ManyToMany可能被錯誤地放置,我現在只是在玩Django)。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)
的想法是對名,股票和價格每個產品在一個表中,並在每個產品的信息(ID,值)格式存儲在另一個表。
我確實知道每個產品類別都應具有的字段。例如,型桌面的產品應該有,除其他外,內存大小和存儲大小的領域,而類監控的其他產品應該有分辨率和屏幕尺寸的領域。
我的問題是:我如何保證,在Django中,每個產品只包含其類別的字段?更確切地說,當指定類別監視器的產品時,如何確保只有分辨率和屏幕尺寸是ProdData表中的字段?
我發現了一個類似的問題Django: Advice on designing a model with varying fields,但沒有答案如何確保上述。
預先感謝您。
謝謝。我將在我的建模中考慮到這一點。您提出的方法在性能方面是否存在任何缺陷? – b3rtz