@stilet69
программист

Как добавить зависимый выбор в Django admin?

Есть класс Опции товара

class Options(models.Model):
    """Опции для товара - минералы, пищевая ценность, витамины"""

    TITLE_CHOICES = (
        ("food", "Пищевая ценность"),
        ("vitamins", "Витамины"),
        ("minerals", "Минералы"),
    )
    INFO_CHOICES = (
        ("carb", "Углеводы"),
        ("protein", "Белки"),
        ("fats", "Жиры"),
        ("kal", "кКал"),
    )

    title = models.CharField(
        max_length=10, default="food", choices=TITLE_CHOICES, verbose_name="Тип опций"
    )
    info = models.CharField(
        max_length=10, default="carb", choices=INFO_CHOICES, verbose_name="Значение опции"
    )
    quantity = models.PositiveSmallIntegerField(
        verbose_name="Количество в товаре", default=0
    )


Как добиться, чтобы в админке при выборе поля title TITLE_CHOICES в поле info показывал только определенные значения? Например:
При выборе Пищевая ценность в title поле info давало бы выбрать только Углеводы и Белки
При выборе Витамины поле info давало бы выбрать только Жиры
Списки непересекающиеся. Можно конечно вводить просто символьные значения, но тогда неизбежно задвоение
  • Вопрос задан
  • 176 просмотров
Пригласить эксперта
Ответы на вопрос 1
Вопрос поменяли, теперь он звучит подругому.)
Откуда джанге понять углеводы это витамины или минералы.
Ну вот вам в любом случае нужна отдельная таблица где есть данные о зависимостях.
Вам нужно нормализовать вашу бд или вообще пересмотреть логику.
Если нормализовать бд, то получится у вас две справочные таблицы где вы свяжете энергию и кал и третья с данными куда вы уже будете вносить данные. (если я конечно правильно понимаю что вы вообще хотите.)
P. S. По мне, так вам сначала нужно БД нормально спрлектировать, а уже потом к джанге вопросы задавать) удачи.
Ответ написан
Ваш ответ на вопрос

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

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