2016-07-16 57 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