如何从模型生成的表单中指定所需的小部件(例如TextArea而不是简单的Text输入)?烧瓶SQLAlchemy WTForms

ute*_*ard 3 python flask wtforms flask-sqlalchemy flask-wtforms

我使用了http://flask.pocoo.org/snippets/60/中的代码片段,通过Flask中的模型创建了WTForms表单。除了仅创建输入字段的事实以外,其他所有方法都工作正常。我希望说明(请参见下面的models.py)成为文本区域。有任何想法吗?

从models.py:

title = db.Column(db.String(55))
description = db.Column(db.Text)
Run Code Online (Sandbox Code Playgroud)

从views.py

MyForm = model_form(MyModel, base_class=Form)
form = MyForm()
return render_template('create.html', form=form)
Run Code Online (Sandbox Code Playgroud)

来自create.html

{% for field in form %}
    {{field.label}}
    {{field}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

输出:

<input id="title" name="title" type="text" value="">
<input id="description" name="description" type="text" value="">
Run Code Online (Sandbox Code Playgroud)

我想要的是:

<input id="title" name="title" type="text" value="">
<textarea id="description" name="description"></textarea>
Run Code Online (Sandbox Code Playgroud)

dir*_*irn 5

您可以使用field_args参数model_form来覆盖特定字段的设置。您可以设置从标签到验证器的所有内容。它接受的任何有效参数Field.__init__(),包括小部件。

MyForm = model_form(MyModel, base_class=Form, field_args={
    'description': {'widget': TextArea()},
})
Run Code Online (Sandbox Code Playgroud)

如果您想查看其他可以覆盖的内容,请查看的来源Field