以wtforms形式设置默认值

时间:2016-07-16 15:39:25

标签: python flask flask-wtforms

我正在开发"添加会员详细信息"和"编辑会员详细信息"页。对于"添加会员详细信息"我使用下面显示的wtf表单(剥离版本)

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并将默认值设置为name和phone的值。但努力管理继承。以下是我想要实现的目标。任何帮助表示赞赏。

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

1 个答案:

答案 0 :(得分:1)

使用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