Задать вопрос

Как организовать модель для хранения таблицы размеров товара Django?

Делаю магазин на Django. В магазине есть категории: Обувь, рубашки, трусы, итд. Для каждой категории существуют свои параметры размеров: для обуви - длина стопы, для рубашек - объем груди, объем талии, длина рукава, для штанов - объем бедра и объем талии. Следовательно в модели категории нужно каким-то образом организовать ввод необходимых размерных параметров для товара, а в модели товара заполнять эти данные и выводить на страницу товара в таблице как на рисунке. GFphx.jpg
Как правильно организовать модели?
Пробовал использовать EAV:
1. таблица Категории.
2. таблица ПризнакиКатегорий.
- внешний ключ к Категории;
3. таблица ЗначенияПризнаков.
- внешний ключ к ПризнакиКатегорий;
- внешний ключ к Товары;
- значение

Однако, в таком случае для товара получается плоский список значений, например:
Товар рубашка: длина рукава - 50см, обхват груди - 50см, обхват плеч - 100см, а никак не двумерная таблица с размерами.
Единственный понятный вариант вижу - использовать таблицу, содержащую все возможные характеристики товаров, и заполнять только те, которые нужны для данного товара, а во view отбирать только заполненные поля из таблицы для нужного товара и передавать из в шаблон. Но это какой-то жуткий монстр получается, а не таблица, и при добавлении новой категории придется вручную дописывать в модель новые характеристики.
Помогите, пожалуйста, куда копать?
  • Вопрос задан
  • 1215 просмотров
Подписаться 7 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Если поиска по этим дополнительным характеристикам не требуется - то как вариант - JSONField или picklefield.
А там храните какие угодно доп. характеристики.
Ответ написан
Комментировать
alternativshik
@alternativshik
Товар - Размеры - у Размеров есть какие-то измерения, которые относятся к данному типу товаров(у рубашки длина, объем, у обуви длина по стельке и тп)
Ответ написан
Комментировать
@mr_drinkens89
Столкнулся с подобной проблемой.
можете ли рассказать, какое решение выбрали в итоге?
спасибо
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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