ModelView
読み取り専用のフィールドを作成するにはどうすればよいですか?
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
ModelView
読み取り専用のフィールドを作成するにはどうすればよいですか?
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
SQLAlchemyモデルを使用したFlask-Adminについて話していて、sqlamodel.ModelViewから継承してビューを宣言している場合は、これをクラス定義に追加するだけです。
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
form_widget_args = {
'email':{
'disabled':True
}
}
@thkangの答えにコメントするのに十分な評判がありません。これは、私にとってうまくいったものに非常に近いものです。このdisabled
属性はPOSTデータからフィールドを除外しますが、使用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)
disabled
テキストフィールドに使用しようとすると奇妙なエラーが発生したため、readonly
代わりに次のコマンドを使用しました。
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
form_widget_args = {
'email':{
'readonly':True
}
}
これを試して:
class DisabledTextField(TextField):
def __call__(self, *args, **kwargs):
kwargs.setdefault('disabled', True)
return super(DisabledTextField, self).__call__(*args, **kwargs)
Jinjaテンプレートでフィールドをレンダリングするときにdisabled=true
、WTFormsがkwargを認識しない場合は渡すだけで、html要素の属性として渡すだけです。
<form>
{{ form.example(disabled=True) }}
</form>