Задать вопрос
@1scull1

Django как реализоввать характеристики для разных групп товаров?

Добрый день, подскажите пожалуйста, как корректно реализовать характеристики для разных групп товаров. Например, возьмем для наглядности карточку товара OZON вот есть велосипед 646756cb29638634510771.png со своим набором характеристик и ноутбук 646756f47e226830111977.png уже со своим набором характеристик. Думал в сторону того, чтобы для разных категорий создавать свою модель характеристик, но слишком объемно будет писать каждую модель, возможно есть более удобный способ, чтобы от выбранной категории товара уже был определенный набор характеристик. Например, балон монтажной пены может иметь определенный объем, но уже у доски этого параметра быть не может, соответственно его не нужно отображать при заполнении карточки товара.
Была мысль такая, к примеру есть модель карточки товара
class Product(models.Model):
    name
    price
    description
    product_code
    category
    if category == "доски":
        size

И к примеру если категория равна определенной, то добавляются доп поля, насколько это рационально, использовать данный способ и будет ли он рабочий вообще?
Заранее спасибо за подсказки в нужную сторону!
  • Вопрос задан
  • 204 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanes
@Sanes
Связь многие ко многим Характеристика => Группа.
Дополнительно к категории товаров можно сделать набор доступных групп/характеристик.
При просмотре карточки показываем заполненные.
Можно и обычным Json, Но тогда заполнять будет несколько дольше. И будет неудобно использовать при сортировке. Хотя вроде уже решился этот вопрос.
Ответ написан
@vadiculus
Я реализовал данную логику чере json. + django поддерживает jsonb который можно индексировать (Я не помню можно ли это делать для всех бд, но обычный json для всех). У меня есть репозиторий на гитхаб который использует именно эту логику. Вот этот репозиторий. Исщите эту логику в приложении posts. И все новые характеристики для каждой отдельной категории находятся в attributes_conf. А на счет добавления их в админку, то в создании категории товаров вам самостоятельно прийдется создавать свой виджет на js где вы будете выбирать тип поля и характеристики для этого поля типа max_length, а потом при сохранении категории эти данные отправляются в этот конфигурационный файл attributes_conf.

P. S. Если данное решение вам будет казаться слишком замудренным, то поизучайте тему EAV структуру данных (Но оно работает медленно, и создает большую нагрузку на бд). Но по этой теме нужно больше копаться по источникам. Я нашел довольно мало материала в интернете.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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