Dan*_*bio 0 python flask flask-wtforms flask-admin
我有一个EmployeeForm领域包括PhotoForm如下所示:
class EmployeeForm(Form):
name = StringField('Full Name', validators=[DataRequired()])
title = StringField('Job Title', validators=[DataRequired()])
email = StringField('Company Email', validators=[DataRequired()])
department = StringField('Department', validators=[DataRequired()])
photo = FormField(PhotoForm)
Run Code Online (Sandbox Code Playgroud)
取决于USE_S3配置变量是否设置为True或False我希望我的照片对象上的两个字段自动设置为默认值,如下所示:
class PhotoForm(Form):
image = S3ImageUploadField(base_path=app.config['UPLOAD_FOLDER'],namegen=photo_name_generator)
if app.config['USE_S3']:
image_storage_type = HiddenField('s3')
image_storage_bucket_name = HiddenField(app.config['S3_BUCKET_NAME'])
else:
image_storage_type = HiddenField('empty string')
image_storage_bucket_name = HiddenField('empty string')
Run Code Online (Sandbox Code Playgroud)
但是,当我检查表单的html时,没有隐藏的字段,也没有当我在提交时检查数据库是否有任何设置值image_storage_type,image_bucket_name并且我无法弄清楚为什么会这样.我已经检查了一些stackoverflow问题,但它们并不完全符合我的问题,因为我正在使用Flask-Admin和WTForm在一起,在我看来,它使它更棘手.
此外,我admin.py的表单呈现文件如下所示:
class EmployeeView(ModelView):
form = EmployeeForm
Run Code Online (Sandbox Code Playgroud)
我不确定这是WTForm方面或Flask-Admin方面的问题,但我已经尝试了很长时间才能完成这项工作.有没有人有任何想法?非常感谢帮助.
字段的第一个参数是其标签.在您的代码中,您没有将数据传递到字段中,而是设置其标签.使用defaultkwarg 设置默认数据.
from wtforms import Form, HiddenField
class PhotoForm(Form):
default_image_data = "foo" if True else "bar"
image_storage_type = HiddenField('image storage', default=default_image_data)
>>> form = PhotoForm()
>>> form.image_storage_type.data
'foo'
>>> form.image_storage_type()
u'<input id="image_storage_type" name="image_storage_type" type="hidden" value="foo">'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1808 次 |
| 最近记录: |