预填充已选中的BooleanField(WTForms)

对于我一生,我无法弄清楚如何使用WTForms预先填充BooleanField。我有一个名为“活动”的字段。默认情况下为不选中,并且不是必需的。所以我将其设置为…

class QuestionForm(Form):

question = TextField('Question', [validators.Required()])

slug = TextField('Slug', [validators.Required()])

active = BooleanField('Active')

然后我有一个EDIT PAGE,在其中显示要编辑的“问题”的表格。

{{ form.question.label }}

{{ form.question(value=q.question) }}

{{ form.active(value=q.active) }} Show this question?

如果’active’为True,我希望BooleanField(复选框)具有’checked’属性。如果为False,则不会。但是我什至无法弄清楚如何使复选框具有选中状态,在渲染表单时,更不用说条件部分了。

唯一能够使它显示出来的方法是在定义表单时是否添加default = True。但这不是我所需要的。

我曾尝试使用“默认”,“初始”,“值”,“选定”,同时渲染表格时没有运气。而且我已经搜索了文档和Google。我想我缺少了什么!:)

更新

这就是我的观点。也许是问题所在?

@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)

回答:

如果你有一个对象,则可以使用它来填充表单,例如form = QuestionForm(obj=my_obj)。如果只想设置活动属性,请使用form = QuestionForm(active=True)

以上是 预填充已选中的BooleanField(WTForms) 的全部内容, 来源链接: utcz.com/qa/421257.html

回到顶部