2016-07-16 3 views
0

Я разрабатываю страницу «Добавить детали участника» и «Редактирование деталей участника». Для «добавить детали членов» Я использую форму WTF, показанную ниже (Stripped версии)Установка значений по умолчанию в форме wtforms

class RegisterForm(Form): 

    name = TextField(
     'Name', 
     validators=[DataRequired(), Length(min=3, max=25)] 
    ) 

    phone = TextField(
     'Phone', 
     validators=[DataRequired(), 
      Length(min=10, max=10, message="Invalid phone number")], 
    ) 

Для редактирования страницы, идея заключается в том, чтобы наследовать EditForm от RegisterForm и установить значение по умолчанию для значений имени и телефона. Но он пытается управлять наследованием. Ниже я пытаюсь достичь. Любая помощь приветствуется.

class EditForm(RegisterForm): 
    def __init__(not sure of args, member): 
     self.name.default = member.name 
     self.phone.default = member.phone 

ответ

0

При использовании TextField следует установить self.field.data вместо self.field.default. И в этом случае вы можете выполнить свои значения по умолчанию, просто передав member в конструктор по умолчанию вашей формы, используя ключевое слово obj. Вот что я имею в виду:

form = EditForm(obj=member) 

Форма будет искать атрибуты на member, чтобы заполнить его поле с таким же именем (вот the docs об этом). Он имеет такой же эффект, как следующий код:

class EditForm(RegisterForm): 
    def __init__(self, member, *args, **kwargs): 
     super(EditForm, self).__init__(*args, **kwargs) 
     self.name.data = member.name 
     self.phone.date = member.phone 
Смежные вопросы