How do I add a "class" to a ChoiceField in Django?

I have a ChoiceField in my Django Form:

gender = forms.ChoiceField(label='', choices=GENDER)

I'd like to add a class attr to the field so I can style it. Something like the following usually works:

forms.Field(label="Display name",help_text='',widget=forms.TextInput(attrs={'class': 'wideInput'}))

But this doesn't work for the ChoiceField, I get the following error:

TypeError: init() got an unexpected keyword argument 'attrs'

What widget should I use in order to add a class to my ChoiceField?

Answers


I had a quick read of https://docs.djangoproject.com/en/1.4/ref/forms/widgets/

which rabbited on about widgets - apparently they are

Django’s representation of a HTML input element. The widget handles the rendering of the HTML

and then each form field is tied to a widget - have a read of:

https://docs.djangoproject.com/en/1.4/ref/forms/fields/#built-in-fields

for the ChoiceField, the defaultWidget is "Select" (as noted in the above link). Ok, knowing the right widget, to add the class i just needed:

widget=forms.Select(attrs={'class':'regDropDown'})

so that my final line ended up reading:

gender = ChoiceField(label='', choices=SEX, widget=forms.Select(attrs={'class':'regDropDown'}))

Huzzah!


the ChoiceField use the forms.Select widget

forms.Select(attrs={"name": "select_0","class": "form-control"})

Need Your Help

Add an Expires or a Cache-Control header in JSP

java jsp http cache-control

How do you add an Expires or a Cache-Control header in JSP? I want to add a far-future expiration date in an include page for my static components such as images, CSS and JavaScript files.

No refs in common and none specified; doing nothing

git gitolite

I had a local git project that I wanted to add to gitolite. Apparently this is hard so I abandoned the idea. I created a new gitolite repo by adding it to gitolite-admin/conf/gitolite.conf and comm...