2012-07-12 16 views
20

Ho un ChoiceField nel mio Django Forma:Come aggiungo una "classe" a un ChoiceField in Django?

sex = forms.ChoiceField(label='', choices=SEX) 

vorrei aggiungere un classattr al campo così posso lo stile di esso. Qualcosa di simile a quanto segue di solito funziona:

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

Ma questo non funziona per il ChoiceField, ottengo il seguente errore:

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

Cosa widget dovrei usare per aggiungere una classe al mio ChoiceField?

risposta

38

ho avuto una rapida lettura di https://docs.djangoproject.com/en/1.4/ref/forms/widgets/

che rabbited su sui widget - a quanto pare sono

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

e quindi ogni campo del modulo è legata ad un widget - avere una lettura di:

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

per ChoiceField, il parametro di default è "Seleziona" (come indicato nel link precedente). Ok, conoscendo il widget di destra, per aggiungere la classe ho solo bisogno:

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

in modo che la mia linea finale ha finito per leggere:

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

Huzzah!

+0

Si dovrebbe essere in grado di accettare la propria risposta dopo un certo periodo di tempo –

+0

Grazie per questo – ajt

3

il ChoiceField utilizzare il widget di forms.Select

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