Forms
иметь Fields
, Fields
имейте a value
. Однако они только получают a value
после того, как форма была отправлена.
field.value
, None
до регистрации и заливки это в послесловиях? form.data['field']
. FieldWithData
для предотвращения любых непоследовательных состояний (если у Вас есть объект этого типа Вы знаете, он имеет данные), и позволяет мне устанавливать данные в инициализаторе вместо того, чтобы получить доступ к атрибутам непосредственно (хотя я предполагаю, что это не так отличается от использования метода set),Form
объект? Опции: form.fields['name'].value
(как это в настоящее время хранится внутренне),form.data['field']
(создайте класс "данных" прокси, который получает реальные данные от поля, или перестройте внутренности, чтобы на самом деле хранить данные как это),form.field.value
- выглядит довольно хорошим, но затем у меня было бы две ссылки на то же поле, один как form.field
и один как form.fields['field']
в котором я нуждаюсь внутренне так, чтобы я мог выполнить итерации по нимСлишком много проектных решений. Сведение с ума меня. Это - то, что сосет о solo'ing проект.
Это действительно зависит от того, как вы взаимодействуете с рассматриваемыми структурами. Вы манипулируете объектами Форма
и Поле
до присвоения им значений? Вам нужно часто перебирать все заданные поля
? Вам понадобится Форма
после того, как она будет отправлена? И т.д.
Я бы предложил написать часть / весь код, который использует Form
, и выяснить, как вы хотите, чтобы взаимодействовал с данными Form
, и как бы выглядел ваш идеальный интерфейс.
Я бы разделил определение формы и значения формы из отправки. Т.е. У меня не было бы атрибута value
в объектах Field (Definition).
Для работы с отправленными значениями я, вероятно, использовал бы dict. Вы можете позволить классу Form обрабатывать создание этого dict:
# assuming my_form is a Form object and request represents the HTTP request
form_values = my_form.values_from_request(request)
print(form_values["Name"])
Метод values_from_request
будет перебирать поля формы (определения) для получения представленных данных из HTTP-запроса. Этот метод также может выполнять такие функции, как проверка и преобразование типов данных.