@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", чтобы это работало.

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

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

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

Войти через центр авторизации
Похожие вопросы