Python Django:关于设计变场模型的建议
我正在寻找一些关于在django中创建某种动态模型的最佳方法的建议/意见 该结构需要描述产品的数据。大约有60个可能相关的不同数据点,每个产品根据其产品类型选择其中的20个(有很多重叠)。大约有24种不同的产品类型,每种产品类型分为6个类别之一 一种明显但不实用的方法是将所有100个数据点放入产品模型中,然后进行挑选,忽略任何留空的字段。优点:很明显。缺点:它很难看,如果需要添加更多数据点,则需要更新数据库 我的想法是使每个产品完全抽象,只定义其产品类型和其他一些识别特征Python Django:关于设计变场模型的建议,python,django,orm,models,Python,Django,Orm,Models,我正在寻找一些关于在django中创建某种动态模型的最佳方法的建议/意见 该结构需要描述产品的数据。大约有60个可能相关的不同数据点,每个产品根据其产品类型选择其中的20个(有很多重叠)。大约有24种不同的产品类型,每种产品类型分为6个类别之一 一种明显但不实用的方法是将所有100个数据点放入产品模型中,然后进行挑选,忽略任何留空的字段。优点:很明显。缺点:它很难看,如果需要添加更多数据点,则需要更新数据库 我的想法是使每个产品完全抽象,只定义其产品类型和其他一些识别特征 class Produ
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字段?放弃整个追求,去做更好的事情
谢谢你的帮助 如果您正在django中寻找某种类型的模型的动态属性实现,请查看或。这是普通的关系数据库设计。不要使用OO和继承技术对其进行过度优化 您有一个产品类别表,其中(可能)只有名称 您有一个产品类型表,其中FK的to类别信息不多 您有一个与产品类型具有FK关系的产品表 您有一个包含数据点的产品功能表和一个FK to Product 要使用产品,请查询该产品。如果您需要这些功能,只需使用“功能集”。Django给你拿来了 这非常有效,是关系数据库和ORM层的一个成熟特性。DB缓存和ORM缓存使这些查询进行得非常快