在flask-admin中的ModelView中自定义窗体的窗口小部件

kur*_*tgn 3 python flask flask-admin

我有一个模特News:

class News(db.Model):
    __tablename__ = 'news'
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.String)
    active_from = db.Column(db.DateTime)
    active_until = db.Column(db.DateTime)
Run Code Online (Sandbox Code Playgroud)

它被整合成flask-admin如此:

class MyModelView(ModelView):
    def is_accessible(self):
        return current_user.usergroup.name == 'admin'

admin.add_view(MyModelView(News, db.session))
Run Code Online (Sandbox Code Playgroud)

但当我打开我的管理页面时,我看到了一个input type='text'小部件news.content.我怎么能把它放在textarea那里呢?

Cel*_*leo 7

在代码中,db.String映射到StringFields,db.Text映射到TextAreaFields,它们分别向用户显示文本输入textareas.

要覆盖此行为,您可以设置form_overrides字段:

from wtforms.fields import TextAreaField

class MyModelView(ModelView):
    form_overrides = dict(string=TextAreaField)
    def is_accessible(self):
        return current_user.usergroup.name == 'admin'
Run Code Online (Sandbox Code Playgroud)