0

假设我有一个汽车模型。每辆汽车都有属性:颜色、尺寸、重量等……我希望用户允许为每辆汽车对象创建新属性。但是我想共享“属性”,以便属性“大小”在数据库中只存在一次,但用户添加它们的每个对象都存在值。

我的旧方法是两个模型:Car、KeyValue(key:String, value:String) 和 Car 与 KeyValue 的关系为 1:m。

现在,为了确保我的上述约束,我想到了以下几点:

  • 三个对象:汽车、钥匙、价值
  • 值(键:键)
  • 汽车(1:m 与价值的关系)

但是,这种反向方法效果很好,但对我来说看起来并不“干净”。因此,我想问一下更清洁的方法是否可行。

4

3 回答 3

1

我读了这个 http://www.craigkerstiens.com/2012/06/11/schemaless-django/

我没用过这个,但我觉得没问题。

一个不太复杂的方法是

django-picklefield http://pypi.python.org/pypi/django-picklefield/

我希望这可以帮助你

于 2012-07-06T14:04:21.730 回答
0

如果您的“选择”具有延展性,即可以添加、编辑或删除它们,那么选择应该是它自己的模型。例如:

class Color(models.Model):
    name = models.CharField(max_length=50)

class Car(models.Model):
    color = models.ForeignKey(Color, related_name='cars')
于 2012-07-05T19:34:40.083 回答
-2

你应该有 Cars 和 CarModels

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
}
于 2012-07-05T19:38:44.200 回答