假设我有一款车型。每辆车都有属性:颜色,尺寸,重量等......我希望用户允许为每个汽车对象创建新属性。但是,我希望共享“属性”,以便属性“大小”仅在数据库中存在一次,但是对于用户添加它们的每个对象都存在值。
我的旧方法有两个模型:Car,KeyValue(key:String,value:String),Car与KeyValue有1:m的关系。
现在,为了确保我的上述约束,我想到了以下内容:
然而,这种反向方法效果很好但对我来说看起来并不“干净”。因此,我想问一下是否有可能采用更清洁的方法。
答案 0 :(得分:1)
我没有用过这个,但我认为没关系。
一种不太复杂的方法是
的django-picklefield http://pypi.python.org/pypi/django-picklefield/
我希望这可以帮到你
答案 1 :(得分:0)
如果你的选择"具有可塑性,即可以添加,编辑或删除,然后选择应该是它自己的模型。例如:
class Color(models.Model):
name = models.CharField(max_length=50)
class Car(models.Model):
color = models.ForeignKey(Color, related_name='cars')
答案 2 :(得分:-2)
你应该有汽车和汽车模型
CarModel有两个属性列表。一个拥有" PerModel"该模型的所有汽车的属性(这意味着该模型的所有汽车具有相同的值),以及每辆汽车可以具有不同值的属性的另一个(仅名称)" PerCar"。
CarModel
{
KeyValue(key: String, value:String) propertyValuesPerModel;
List(String) propertyNamesPerCar;
}
Car
{
CarModel model;
KeyValue(key: String, value:String) propertiesPerCar; //Keys can only be those that appear on model.propertyNamesPerCar
}