Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:关于设计变场模型的建议_Python_Django_Orm_Models - Fatal编程技术网

Python Django:关于设计变场模型的建议

Python Django:关于设计变场模型的建议,python,django,orm,models,Python,Django,Orm,Models,我正在寻找一些关于在django中创建某种动态模型的最佳方法的建议/意见 该结构需要描述产品的数据。大约有60个可能相关的不同数据点,每个产品根据其产品类型选择其中的20个(有很多重叠)。大约有24种不同的产品类型,每种产品类型分为6个类别之一 一种明显但不实用的方法是将所有100个数据点放入产品模型中,然后进行挑选,忽略任何留空的字段。优点:很明显。缺点:它很难看,如果需要添加更多数据点,则需要更新数据库 我的想法是使每个产品完全抽象,只定义其产品类型和其他一些识别特征 class Produ

我正在寻找一些关于在django中创建某种动态模型的最佳方法的建议/意见

该结构需要描述产品的数据。大约有60个可能相关的不同数据点,每个产品根据其产品类型选择其中的20个(有很多重叠)。大约有24种不同的产品类型,每种产品类型分为6个类别之一

一种明显但不实用的方法是将所有100个数据点放入产品模型中,然后进行挑选,忽略任何留空的字段。优点:很明显。缺点:它很难看,如果需要添加更多数据点,则需要更新数据库

我的想法是使每个产品完全抽象,只定义其产品类型和其他一些识别特征

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缓存使这些查询进行得非常快