2013-05-07 8 views
5

私はthis changeを実装して、WTFormsで無効になっているフィールドを作成することができました。レンダリングする前に、私のビュー内のフィールドを選択的に無効にする方法はありますか?Python Flask WTForms:ビューでフィールドを動的に無効にするにはどうすればよいですか?

+1

あなたがテンプレートに '(_ = "無効" 無効)form.field'試みることができます。 http://wtforms.simplecodes.com/docs/1.0.4/fields.html#wtforms.fields.Field.__call__ –

答えて

7

フィールドを削除しようとしている場合は、ドキュメントのRemoving Fields Per-instanceをご覧ください。ドキュメントから

時には、あなたは すべての状況で、またはすべてのユーザーに有用ではないフィールドを持つフォームを作成します。 フォームの継承では、必要なフィールドだけをフォームに定義することは可能ですが、 既存のフォームを微調整する必要があることがあります。幸いにも、フィールドを持つことができ フォームはデル キーワードを使用して、ポストのインスタンスを削除:

class MagazineIssueForm(Form): 
    title = TextField() 
    year = IntegerField('Year') 
    month = SelectField(choices=MONTHS) 

def edit_issue(): 
    publication = get_something_from_db() 
    form = MagazineIssueForm(...) 

    if publication.frequency == 'annual': 
     del form.month` 
+0

ありがとうございました。しかし、私はフィールドを無効にするのではなく、削除することを検討しています。 – sixarm

+0

ああ、申し訳ありません - 私は誤解しました。どのように無効にするのですか?それを表示しますが、フィールドを変更できないようにしますか? – Ewan

+0

これは別の質問と非常によく似ており、そこにも詳細な回答が書かれています:http://stackoverflow.com/a/16576294/244393 – Crast

5

それは@Bibhasが提案されているほとんどのようです。 私はこれを正しく理解し、あなたは、htmlのdisabled属性によってフィールドを無効にしたい場合、以下は私のために働いている場合:

form.field(disabled=True) 

この回答は少し遅くなるかもしれませんが、他のいずれかがこの問題にそれを持っている場合役立つかもしれません。

3

Vimのforms.py:

add_time = DateTimeField(

    '添加时间', 
    format='%Y-%m-%d %H:%M:%S', 
    default=datetime.datetime.now(), 
    # I use bs3,and it well add input an attribute disabled 
    render_kw={'disabled':''}, 
    validators=[DataRequired()], 
) 
+0

ありがとう!私の場合、フォームはすでにインスタンス化されているので、私は 'form.my_field.render_kw = {'disabled': 'disabled'}'しました。 – elethan

関連する問題