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

Как в Django для одного поля сделать несколько значений?

Добрый день!
Я новичок, потому не удивляйтесь, если увидите явные ляпы в написанном.
Делаю модель товара в интернет-магазине. У товара есть характеристики, такие как цвет или размер, где может быть несколько значений. У меня есть 2 мысли как это сделать:

1. Добавить в модель товара и заполнять по мере необходимости:
color1 = models.CharField(max_length=100, choices=ALL_COLORS, blank=True)
color2 = models.CharField(max_length=100, choices=ALL_COLORS, blank=True)

2. Сделать
colors = models.ManyToManyField(Color, verbose_name='colors')
И сделать в дополнение модель "Color", чтобы это работало.

Но выше - это всего лишь предположения новичка. Вопрос в том, как это сделать правильно?
  • Вопрос задан
  • 2007 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
sim3x
@sim3x
Оба способа попахивают
1. Попахивает именование - ну можно ж нормально назвать color_bottom, color_top
2. Попахивает оверинжинирингом

Если товары однородны и у них и правда только колор1 и колор2, то лучше 1
Если у вас неоднородные товары, то нужен json/eav
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Если используется PostgreSQL, то хорошо подойдёт использование JSONField. Если другая СУБД, то придётся использовать EAV.
Ответ написан
Ваш ответ на вопрос

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

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