Где хранить полевые данные и как обеспечить к ним доступ? - PullRequest
1 голос
/ 06 июля 2010

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

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

Слишком много проектных решений.Сводит меня с ума.Вот что отстойно в сольном проекте.

Ответы [ 2 ]

1 голос
/ 06 июля 2010

Я бы держал определение формы и значения формы отдельно от отправки. То есть У меня не было бы атрибута value для объектов Field (Определение).

Для работы с представленными значениями я бы, вероятно, использовал 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 голос
/ 06 июля 2010

Это действительно зависит от того, как вы взаимодействуете с соответствующими структурами. Управляете ли вы объектами Form и Field до присвоения им значений? Вам нужно часто перебирать все данные Fields? Вам нужно Form после отправки? И т.д.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...