如何使用App Engine上的wtforms将ndb StringProperty字段呈现为textarea小部件?

时间:2013-11-20 12:25:46

标签: google-app-engine wtforms

示例代码:

# model
class Foos(ndb.Model):
    bar = ndb.StringProperty()


# handler
class FoosHandler(BaseHandler):
    def get(self):
        form = model_form(Foos)
        self.render('form.html', form=form)

# template
{{ form.bar() }}

根据wtforms文档,任何具有" multiline = True"属性的StringProperty字段;将使用TextArea小部件呈现。

但是,NDB(仅限DB)不支持multiline = True,所以这不起作用。

有没有办法指定应该使用哪个窗口小部件进行渲染?

1 个答案:

答案 0 :(得分:2)

wtforms Fields可以作为参数传递'widget'来覆盖用于渲染它们的类。使用model_form时,您可以传递field_args的dict,其中每个键都是model-property,值是在创建字段时用作关键字-args的dict:

form = model_form(Foos, field_args={'bar': {'widget': wtforms.widgets.TextArea()}})