2011-03-17 10 views
4

必要な属性とエラー属性を、テンプレート内のフィールドでマークアップの一部としてレンダリングする必要があります。私はレイアウトが自動生成されたときにform.as_pなどを使ってこれを行うことができることを知っています。Djangoフォームフィールドでの必要なレンダリングとエラークラス

しかし、私はフォームの複雑な2列のレイアウトを持っています。 required_css_class = '必須'をフォームクラスの一部として含めることができますが、個々のフィールドに対してhtmlを吐き出すことはできますか?

私はjqueryの検証を生成されたHTMLから多くの余分な作業をせずに実行したいので、これを行う必要があります。

おかげ

答えて

7

required_css_classas_pas_table、そして、そのような用でforms.BoundField.css_classesforms.BaseForm._html_outputで使用されているようです。

これは通常のウィジェットレンダリングの一部ではありません。

あなたはしかし、あなたの要素のためのクラスを返すために、同じcss_classes方法を使用することができますので、私は最も簡単な解決策は、要素と<input>をラップし、そのクラス{{ field.css_classes }}を与え、あなたの検証セレクターを変更することだと思います。ベースにハッキング伴うだろう

def __init__(self, *args, **kwargs): 
     super(form, self).__init__(*args, **kwargs) 
     for field in self.errors: 
      if not field == '__all__': 
       # errors dict can have key __all__ for non field errors. 
       self.fields[field].widget.attrs['class'] = \ 
        self.fields[field].widget.attrs.get('class', '') + 'error' 

required_css_classを使用するには、あなたがBoundField.css_classesメソッドを使用する必要があるだろう、:

また

、ここでエラーが発生したフィールドにエラークラスをハックする方法ですBoundFieldはオンデマンドで構築されているため、__getitem____iter__となります。上記の方法は簡単です。

+0

上記のサンプルでは、​​「フォーム」とは何ですか? –

+0

nvm、それを理解しました! –

関連する問題