我需要实现一个相当标准的实体属性值层次结构。有多种类型的设备,每种类型都有一组可以设置的设置,每个单独的设备对每个设置都有一组特定的值。似乎django eav和eav django包都不再维护了,所以我想我需要自己运行。但我如何设计这个呢?到目前为止,我在想这样的事情(跳过很多细节)
class DeviceType(Model): name = CharField() class Device(Model): name = CharField() type = ForeignKey(DeviceType) class Setting(Model): name = CharField() type = CharField(choices=(('Number', 'int'), ('String', 'str'), ('Boolean', 'bool'))) device_type = ForeignKey(DeviceType) class Value(Model): device = ForeignKey(Device) setting = ForeignKey(Setting) value = CharField() def __setattr__(self, name, value): if name == 'value': ... do validation based on the setting type ... def __getattr__(self, name): if name == 'value': ... convert string to whatever is the correct value for the type ...
我错过什么了吗?有更好的方法吗?这个行吗?在
我正试图回答,让我知道,我们是否在同一架飞机上。我想,你需要先制定EAV数据库scema。用于标识实体、属性和关联值。在这里,在你提到的例子中,实体可能是设备,它的属性可能是设置的。如果我们再举一个例子,比如在汽车销售中,实体是销售对象,属性是客户购买的产品(汽车),价值是价格、车型、汽车颜色等。 生成主表和存储映射的表(如果有)。 中的此架构实现模型.py将生成您的模型,并通过shell在这些模型中插入值,或插入脚本。在
相关问题 更多 >
编程相关推荐