Как создать поле, появляющееся в зависимости от других полей?

У меня есть некоторая модель и поле model_type, описанное так:
model_type = models.CharView(maxlength = 2, choice = [
  ('ST', 'Standard'),
  ('UN', 'Unlimited'),
  ('CU', 'Custom')
])


Мне нужно сделать следующее: если выбран вариант Standard, то нужно показывать поля start_time и end_time (оба - DateTimeField), если выбран Unlimited, то не нужны поля вообще, а если выбран Custom, то нужны поля start_time, end_time (DateTimeField) и duration (DurationField).

Как это можно сделать (при выборе одного model_type в админке должны пропасть ненужные поля)?

Была идея сделать одну абстрактную модель и три дочерних, но тогда в админке будет три разных раздела. Если кто-нибудь знает, как можно их объединить в один раздел - то, я думаю, лучше будет сделать именно так.
  • Вопрос задан
  • 268 просмотров
Пригласить эксперта
Ответы на вопрос 1
Можно сделать не через абстрактную модель, а через прокси-модели.
Каждая прокси модель будет иметь свою форму с нужными полями и значение по умолчанию для model_type (иными словами одна прокси-модель для каждого model_type)

Но проще дописать js к странице админки, скрывающий определённые поля при смене model_type
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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