Django — как лучше привязать к модели несколько элементов (неизвестно, сколько)?
Добрый вечер.
Есть некая модель в Django. И хочется сделать возможность пользователю задавать объекту несколько свойств, уникальных для каждого объекта.
Например: цена: 300 рублей, хорошесть: 5+. Или: вес: 256 кг, объём: 0.5 литра. Т.е. свойства уникальные, никак не связанные (хотя планируется добавить несколько «общих» рекомендаций) и неизвестно, сколько их будет (но какое-то разумное количество).
Возникает вопрос — как это лучше сделать так, что бы было как можно меньше проблем с работой в джанге, хранением в базе, изменением, удалением/добавлением.
Пока есть два варианта — сконкатенировать через что-нибудь и сохранить как VARCHAR. Но это как-то муторно и надо будет каждый раз при загрузке модели сплитить.
Второй вариант — сделать MultiToMultiField и динамически создавать/удалять свойства в отдельной таблице. Кажется, что это хороший вариант, но возможны проблемы с удалением и изменением. Например, при удалении поля ничего происходить не должно, а при удалении модели все соответствующие поля должны удаляться. Может, можно сделать как-то просто?
class Product(Model):
''' то, к чему привязываем параметры '''
# тут поля модели
class ProductParam(BaseModel):
name = models.CharField(max_length=255,verbose_name=u'Параметр')
value = models.CharField(max_length=255,verbose_name=u'Значение')
product = models.ForeignKey(Product,verbose_name=u'Товар')
Так при удалении параметра не будут удаляться сами продукты, а при удалении продукта будут удаляться его параметры