Где хранить полевые данные и как обеспечить доступ к ним?

Forms иметь Fields, Fields имейте a value. Однако они только получают a value после того, как форма была отправлена.

  1. Как я должен сохранить это значение? Если я даю каждому полю атрибут значения, field.value,
    • оставьте его как None до регистрации и заливки это в послесловиях?
    • Опустить его полностью и динамично добавить его?
    • Сохраните его на форме вместо этого, как form.data['field'].
    • Создайте класс обертки FieldWithData для предотвращения любых непоследовательных состояний (если у Вас есть объект этого типа Вы знаете, он имеет данные), и позволяет мне устанавливать данные в инициализаторе вместо того, чтобы получить доступ к атрибутам непосредственно (хотя я предполагаю, что это не так отличается от использования метода set),
  2. Как я должен обеспечить доступ к полевым данным через Form объект? Опции:
    • form.fields['name'].value (как это в настоящее время хранится внутренне),
    • form.data['field'] (создайте класс "данных" прокси, который получает реальные данные от поля, или перестройте внутренности, чтобы на самом деле хранить данные как это),
    • form.field.value - выглядит довольно хорошим, но затем у меня было бы две ссылки на то же поле, один как form.field и один как form.fields['field'] в котором я нуждаюсь внутренне так, чтобы я мог выполнить итерации по ним

Слишком много проектных решений. Сведение с ума меня. Это - то, что сосет о solo'ing проект.

1
задан mpen 6 July 2010 в 04:03
поделиться

2 ответа

Это действительно зависит от того, как вы взаимодействуете с рассматриваемыми структурами. Вы манипулируете объектами Форма и Поле до присвоения им значений? Вам нужно часто перебирать все заданные поля ? Вам понадобится Форма после того, как она будет отправлена? И т.д.

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

1
ответ дан 2 September 2019 в 23:16
поделиться

Я бы разделил определение формы и значения формы из отправки. Т.е. У меня не было бы атрибута 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-запроса. Этот метод также может выполнять такие функции, как проверка и преобразование типов данных.

1
ответ дан 2 September 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: