2016-07-16 82 views
0

我正在開發「添加成員詳細信息」和「編輯成員詳細信息」頁面。對於「添加成員的詳細信息」我用下面(剝離版本)所示跆拳道形式以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")], 
    ) 

對於編輯頁面,思想是繼承RegisterForm EditForm並設置默認名稱和電話值。但努力管理繼承。以下是我想要實現的。任何幫助表示讚賞。

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。在這種情況下,只需使用obj關鍵字在表單的默認構造函數中傳入member即可完成默認值。這就是我的意思是:

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