@yeputons

Django — как лучше привязать к модели несколько элементов (неизвестно, сколько)?

Добрый вечер.

Есть некая модель в Django. И хочется сделать возможность пользователю задавать объекту несколько свойств, уникальных для каждого объекта.

Например: цена: 300 рублей, хорошесть: 5+. Или: вес: 256 кг, объём: 0.5 литра. Т.е. свойства уникальные, никак не связанные (хотя планируется добавить несколько «общих» рекомендаций) и неизвестно, сколько их будет (но какое-то разумное количество).

Возникает вопрос — как это лучше сделать так, что бы было как можно меньше проблем с работой в джанге, хранением в базе, изменением, удалением/добавлением.

Пока есть два варианта — сконкатенировать через что-нибудь и сохранить как VARCHAR. Но это как-то муторно и надо будет каждый раз при загрузке модели сплитить.

Второй вариант — сделать MultiToMultiField и динамически создавать/удалять свойства в отдельной таблице. Кажется, что это хороший вариант, но возможны проблемы с удалением и изменением. Например, при удалении поля ничего происходить не должно, а при удалении модели все соответствующие поля должны удаляться. Может, можно сделать как-то просто?
  • Вопрос задан
  • 3305 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Fak3
А что мешает сделать так:

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'Товар')


Так при удалении параметра не будут удаляться сами продукты, а при удалении продукта будут удаляться его параметры
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы