Flask-Admin ModelView中的只读文本字段
我怎么才能让一个ModelView
上的字段变成只读的呢?
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
5 个回答
8
我在尝试给文本框使用 disabled
时遇到了奇怪的错误,所以我改用了 readonly
。
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
form_widget_args = {
'email':{
'readonly':True
}
}
11
我没有足够的声望去评论@thkang的回答,但他的回答跟我找到的解决办法很接近。使用disabled
属性会把这个字段从提交的数据中排除掉,而使用readonly
属性则达到了我想要的效果。
from wtforms.fields import TextField
class ReadonlyTextField(TextField):
def __call__(self, *args, **kwargs):
kwargs.setdefault('readonly', True)
return super(ReadonlyTextField, self).__call__(*args, **kwargs)
20
如果你在讨论使用 Flask-Admin 和 SQLAlchemy 模型,并且你是通过继承 sqlamodel.ModelView 来声明一个视图的话,你只需要在你的类定义中添加以下内容:
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
form_widget_args = {
'email':{
'disabled':True
}
}