如何从模型生成的表单创建TextArea? Flask SQLAlchemy WTForms

时间:2014-01-22 14:09:10

标签: python flask flask-sqlalchemy wtforms flask-wtforms

我使用了来自http://flask.pocoo.org/snippets/60/的代码段来从我在Flask中的模型创建一个WTForms表单。一切正常,除了它只创建输入字段。我希望描述(见下面的models.py)是textarea。有什么想法吗?

来自models.py:

title = db.Column(db.String(55))
description = db.Column(db.Text)

来自views.py

MyForm = model_form(MyModel, base_class=Form)
form = MyForm()
return render_template('create.html', form=form)

来自create.html

{% for field in form %}
    {{field.label}}
    {{field}}
{% endfor %}

输出:

<input id="title" name="title" type="text" value="">
<input id="description" name="description" type="text" value="">

我想要的是什么:

<input id="title" name="title" type="text" value="">
<textarea id="description" name="description"></textarea>

2 个答案:

答案 0 :(得分:4)

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

Field.__init__()

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

答案 1 :(得分:0)

您可以像这样创建自定义表单:

forms.py

from flask.ext.wtf import Form
from wtforms.fields import TextField, TextAreaField, SubmitField
import wtforms

class ItemForm(Form):
    title = Textfield('Title')
    description = TextAreaField('Description')
    submit = SubmitField('Submit')

routes.py

from forms import ItemForm
@app.route('/form')
def form()
    form = ItemForm()
    return render_template('form.html', form=form)

form.html

{% for field in form %}
    {{field.label}}
    {{field}}
{% endfor %}

本教程有更多信息:http://net.tutsplus.com/tutorials/python-tutorials/intro-to-flask-adding-a-contact-page/