如果我在构建字段期间设置默认值,则一切都会按预期工作:
my_field = StringField("My Field: ", default="default value", validators=[Optional(), Length(0, 255)])
但是,如果我尝试以编程方式设置它,则没有任何效果。我尝试过修改__init__
像这样的方法:
class MyForm(FlaskForm):
my_field = StringField("My Field: ", validators=[Optional(), Length(0, 255)])
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.my_field.default = "set default from init" # doesn't work
这不会设置默认值。我怎样才能以编程方式执行此操作(因为该值是基于数据库查询的动态值,如果我在外部执行此操作__init__
那么它不会获得最新值)?
我的相关版本requirements.txt
:
Flask==0.12
Flask-WTF==0.14.2
WTForms==2.1
另外,如果重要的话,我正在运行 Python 3.6。
或者,我很满意一个解决方案,该解决方案使我能够在添加新记录时在初始表单加载时设置此字段的值数据(与构造函数中指定的默认值相同的行为),但同样的表单也用于编辑,因此我不希望它更改已在编辑时保存/存储的对象数据。