DjangoのフォームのフィールドにCSSクラスを適用させる
こんにちは。Djangoのフォームのフィールド(CharFieldなど)に、CSSクラスを適用したくなることってありますよね。今回はその方法をとりあえず書いてみたいと思います。
例えばこういうフォームがあったとします。
from django import forms
class TestForm(forms.Form):
name = forms.charField(max_length=30)
email = forms.EmailField()
この、name
というフィールドに、.name_field
というCSSクラスを適用したい場合は、以下のようにします。
from django import forms
class TestForm(forms.Form):
name = forms.charField(max_length=30)
email = forms.EmailField()
def __init__(self):
super().__init__(*args, **kwargs)
self.fields['name'].widget.attrs["class"] = "name_field"
また、すべてのタグに対して適用させたい場合は、
for field in self.fields.values():
field.widget.attrs["class"] = 'name_field'
などようにすれば適用できます。
バグ、コメントなどあれば是非いただければと思います。