2013-02-14 5 views

答えて

13

をあなたのクラス定義:

class MyModelView(BaseModelView): 
    column_list = ('name', 'last_name', 'email') 
    form_widget_args = { 
     'email':{ 
      'disabled':True 
     } 
    } 
+9

これはあなたが望むものではないかもしれません。私はこれを実装しましたが、無効にされたフィールドは提出時に**クリアされていたことに気付きました。代わりに 'readonly'を使用した場合、期待される動作が得られます(値は変化しません)。 – Ian

6

あなたはWTFormsはkwargを認識しない場合だけdisabled=trueに渡し、あなたの神社のテンプレート内のフィールドをレンダリングしている場合、それだけでhtml要素への属性であるためにそれを渡します。

<form> 
{{ form.example(disabled=True) }} 
</form> 
7

この試してください:あなたはSQLAlchemyのモデルでフラスコ、管理者の話をしている、とあなたはsqlamodel.ModelViewから継承することによりビューを宣言している場合は、あなただけにこれを追加することができます

class DisabledTextField(TextField): 
    def __call__(self, *args, **kwargs): 
    kwargs.setdefault('disabled', True) 
    return super(DisabledTextField, self).__call__(*args, **kwargs) 
8

@ 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) 
+0

次のように設定する方法はありますか? form_widget_args = { 「type_values」:{「読み取り専用」 は:「読み取り専用」 } } –

+0

ローレンス、私はあなたが読み取り専用になりたいフィールドと同じ名前としてform_extra_fieldsを指定することになり、それがこのフィールドを上書きします。 – pip

+0

つまりform_overrides = dict(your_field_name = ReadonlyTextField)またはおそらくform_extra_fields = dict(your_field_name = ReadonlyTextField( 'Label'、...)) – pip

1

私は、テキストフィールドにdisabledを使用しようとしたとき、私は奇妙なエラーを得たので、私が代わりにreadonlyを使用:

class MyModelView(BaseModelView): 
    column_list = ('name', 'last_name', 'email') 
    form_widget_args = { 
     'email':{ 
      'readonly':True 
     } 
    } 
関連する問題