Джанго - Мультивиджет

{title}

Говоря о виджетах, мы должны знать, что это мост между кодом HTML и полями Django ; это должно во многом влиять на то, как мы собираемся контролировать поведение HTML в наших формах и, следовательно, в нашем приложении.
Таков контроль, что мы можем применять некоторые методы программирования, в которых мы позволим себе хранить и обрабатывать данные из разных виджетов и передавать их Django, как если бы это были данные из одного источника.
Разделить данные между несколькими виджетами
Эту операцию можно выполнить с помощью метода render () виджета, поэтому мы можем получить поле и, обработав его, разделить его на несколько HTML-входов, каждый из которых содержит часть значения, которое нам нужно сохранить.
пример

Примером может служить поле DateTime, которое может быть разделено на поле, которое захватывает только дату, и другое, которое фиксирует время, но во время сохранения его в базе данных мы должны присоединиться к ним, и таким образом у нас будет полное поле, но в части пользователя разделен.
Мульти виджет
Поскольку пример, который мы указали выше, довольно утомителен, так как нам пришлось бы иметь дело с написанием слишком большого количества подпрограмм и методов, которые помогают нам с проверкой, в Django мы уже думали об этом, и у нас есть утилиты, которые делают нас большей частью этой работы.
MultiValueField

На стороне полей у нас есть MultiValueField, который помогает нам с проверкой данных, их очисткой и сравнением с каждым из полей, которые строят соединение; Единственное, что нам нужно сделать здесь, это указать, какие поля будут составлять композицию и как мы должны сжимать их, чтобы их можно было использовать в коде Python .
Этот метод предназначен для работы с MultiWidget, который будет отвечать за перевод в HTML всего, что мы ранее определили в классе формы.
Давайте посмотрим на изображение примера кода, где мы реализовали эти концепции:

{title}


Здесь мы видим, как сначала мы определили класс, который наследуется от MultiWidget, в нем мы указываем, что у нас будет два связанных поля InputText, и создадим метод decpress (), который будет отделять значения для его представления.
В следующем классе мы устанавливаем немного больше элементов, сначала мы указываем, что вы должны наследовать от MultiValueField, затем мы указываем, какой виджет вы должны использовать, и, конечно, мы будем указывать, что вы используете виджет, уже определенный выше.
Затем в его методе __init__ мы указываем типы полей, которые он будет принимать, и, наконец, определяем метод compress (), мы видим, что кроме self он также получает параметр data_list, в этом мы передадим список данных, которые должны быть объединены, и Мы возвращаемся как кортеж, мы также используем их проверку, чтобы избежать получения ошибочных данных, которые могут угрожать нашему приложению.
На этом мы завершим этот урок, увидев, что у нас есть довольно продвинутый инструмент, который позволяет нам немного больше настраивать наши формы в нашем приложении, выполняя простые действия.

  • 0