在我的生命中,我不知道如何用WTForms预填充布尔字段。我有一个字段叫“active”。它默认为不检查,并且不是必需的。所以我把它设置成。。。
class QuestionForm(Form):
question = TextField('Question', [validators.Required()])
slug = TextField('Slug', [validators.Required()])
active = BooleanField('Active')
然后我有一个编辑页面,我在其中显示一个表单,用于我要编辑的“问题”。
{{ form.question.label }}
{{ form.question(value=q.question) }}
{{ form.active(value=q.active) }} Show this question?
如果“active”为True,我希望布尔字段(复选框)具有“checked”属性。如果是错的,就不要去。但是我甚至不知道如何使复选框在呈现表单时处于选中状态,更不用说条件部分了。
唯一的方法是,在定义表单时添加default=True。但那不是我需要的。
我试过在不走运地呈现表单时使用“default”、“initial”、“value”、“selected”。我搜索了文档和谷歌。我想我错过了什么!:)
更新
这是我的看法。也许是问题所在?
@mod.route('/q/<slug>/edit', methods = ['GET', 'POST'])
def edit(slug):
form = QuestionForm(request.form, csrf_enabled=False)
q = Question.query(Question.slug==slug).get()
if request.method=='POST':
if form.validate_on_submit():
q.question = form.data.get('question')
q.slug = form.data.get('slug')
q.active = form.data.get('active')
q.put()
return redirect('/questions')
return render_template('questions/edit.html', form=form, q=q)
snahor的回答在经过大量搜索后帮助了我们(+1)。谷歌在这个问题上似乎很软弱。我发现我需要
我把它当作
如果你有一个对象,你可以用它来填充你的表单,比如
form = QuestionForm(obj=my_obj)
。如果只想设置活动属性,请使用form = QuestionForm(active=True)
。要将默认布尔值设置为True,需要将默认值设置为“checked”
Source
相关问题 更多 >
编程相关推荐