我正在开发“添加成员(member)详细信息”和“编辑成员(member)详细信息”页面。对于“添加成员(member)详细信息”,我使用如下所示的 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并将默认值设置为姓名和电话的值。但在管理遗产方面却遇到了困难。以下是我想要实现的目标。如有任何帮助,我们将不胜感激。
class EditForm(RegisterForm):
def __init__( not sure of args, member ):
self.name.default = member.name
self.phone.default = member.phone
最佳答案
使用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
关于python - 在 wtforms 表单中设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38412715/