Django html регулирует значение ввода на основе опции select

Сценарий таков: в html select есть два варианта "куб" или "цилиндр". и есть три поля ввода: длина, ширина и высота.

Я хочу, чтобы при выборе пользователем опции "цилиндр" из выпадающего меню, пользователь должен ввести одинаковое значение для полей ввода длины и ширины. Если нет, то при нажатии на кнопку отправки формы, должно появиться предупреждение, чтобы посоветовать пользователю убедиться, что длина и ширина одинаковы.

как проще всего выполнить такую работу?

Вы можете сделать это на javascript, но это не очень надежно, так как кто-то может отключить javascript. Поскольку это важно для вашей формы и включает несколько полей, вы можете расширить метод clean() вашей формы.

class MyForm(forms.Form):
    def clean(self):
        cleaned_data = super().clean()
        length = cleaned_data.get("length")
        width= cleaned_data.get("width")
        type = cleaned_data.get("type")
        if type == "cylinder" and length != width:
            raise ValidationError(
                    "Cylinders must have equal length and width"
                )     

Вы можете найти раздел django docs о валидации форм здесь

Вернуться на верх