【发布时间】:2011-04-06 08:04:36
【问题描述】:
我正在寻找一些关于在 django 中创建某种动态模型的最佳方法的建议/意见。
结构需要描述产品的数据。大约有 60 个可能相关的不同数据点,每个产品根据其 ProductType 选择其中大约 20 个点(有很多重叠)。大约有 2 打不同的 ProductType,每个 ProductType 都属于 6 个类别之一。
显而易见但不优雅的方法是将所有 100 个数据点放入 Product 模型中,然后随意选择,忽略任何留空的字段。优点:很明显。缺点:丑陋,如果需要添加更多数据点,需要更新数据库。
我的想法是让每个产品完全抽象,只定义它的产品类型,以及其他一些识别特征。
class Product(models.Model):
productType = models.ForeignKey(ProductType)
然后,我将为每种数据点(数字、文本、日期等)创建一个单独的模型,如下所示:
class TextData(models.Model):
fieldName = models.CharField(etc)
verboseName = models.CharField(etc)
data = models.CharField(etc)
product = models.ForeignKey(Product)
最后,我会创建一个模型来定义与每种产品类型相关的数据类型,以及每个数据点应该被称为什么。
class ProductType(models.Model):
name = models.CharField(etc)
....
所以主要问题是:当产品类型的相关字段可能不同时,填写相关字段的最佳方式是什么?也许另一个模型包含数据点的名称/类型,以及 ProductType 和该模型之间的 ManyToManyField?带有 XML 的文本字段?定义结构的外部 XML 字段?放弃这整个追求,去做更好的事情吗?
感谢您的帮助!
【问题讨论】: