我有一个表格,我想用上一页收到的信息自动填充一些字段,但如果他们想调整它,它需要是可更改的。我正在为我的 SelectField 使用动态创建的列表,但添加 StringField 并不成功。请参阅下面的我的代码:
forms.py
class get_vals(var):
...
typs = var.p_typs
p_name = var.p_name
return typs,p_name
class NewForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
typ1 = SelectField('Type', validators=[Optional()])
def __init__(self,var):
super(NewForm,self).__init__()
typs,p_name = get_vals(var)
self.typ1.choices = typs
self.name.default = p_name
Using:
self.name.default
将我的姓名表格留空。如果我使用:
self.name.data
它将正确的信息放入表单中,但是您无法更改这些值,并且必须使用它所放入的任何内容,这不是一个选项。
...
<form action="" method="post">
{{ form.hidden_tag() }}
<p>
{{ form.name.label }}
{{ form.name(size=24) }}
{{ form.typ1.label }}
{{ form.typ1() }}
</p>
...
有没有办法设置变量的默认值并使其可以更改?谢谢
更新
如果我在运行获取名称变量的表单后将要尝试更新的字段设置为“无”,则我可以毫无错误地更改变量。但是,它不会覆盖 form.name.data 值
form = NewForm(var)
var.name == None
if form.validate_on_submit():
var.name = form.name.data
这会运行(在表单中显示正确的变量并且是可调整的),但在提交表单时不会覆盖该值,如何覆盖该值?