ModelView
の読み取り専用でフィールドを作成するにはどうすればよいですか?Flask-Admin ModelViewのReadonlyテキストフィールド
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
ModelView
の読み取り専用でフィールドを作成するにはどうすればよいですか?Flask-Admin ModelViewのReadonlyテキストフィールド
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
をあなたのクラス定義:
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
form_widget_args = {
'email':{
'disabled':True
}
}
あなたはWTFormsはkwargを認識しない場合だけdisabled=true
に渡し、あなたの神社のテンプレート内のフィールドをレンダリングしている場合、それだけでhtml要素への属性であるためにそれを渡します。
<form>
{{ form.example(disabled=True) }}
</form>
この試してください:あなたはSQLAlchemyのモデルでフラスコ、管理者の話をしている、とあなたはsqlamodel.ModelViewから継承することによりビューを宣言している場合は、あなただけにこれを追加することができます
class DisabledTextField(TextField):
def __call__(self, *args, **kwargs):
kwargs.setdefault('disabled', True)
return super(DisabledTextField, self).__call__(*args, **kwargs)
@ 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)
次のように設定する方法はありますか? form_widget_args = { 「type_values」:{「読み取り専用」 は:「読み取り専用」 } } –
ローレンス、私はあなたが読み取り専用になりたいフィールドと同じ名前としてform_extra_fieldsを指定することになり、それがこのフィールドを上書きします。 – pip
つまりform_overrides = dict(your_field_name = ReadonlyTextField)またはおそらくform_extra_fields = dict(your_field_name = ReadonlyTextField( 'Label'、...)) – pip
私は、テキストフィールドにdisabled
を使用しようとしたとき、私は奇妙なエラーを得たので、私が代わりにreadonly
を使用:
class MyModelView(BaseModelView):
column_list = ('name', 'last_name', 'email')
form_widget_args = {
'email':{
'readonly':True
}
}
これはあなたが望むものではないかもしれません。私はこれを実装しましたが、無効にされたフィールドは提出時に**クリアされていたことに気付きました。代わりに 'readonly'を使用した場合、期待される動作が得られます(値は変化しません)。 – Ian