2012-07-12 31 views
20

Tôi có một ChoiceField trong Mẫu Django của tôi:Làm cách nào để thêm "lớp" vào ChoiceField ở Django?

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

Tôi muốn thêm một classattr đến lĩnh vực này vì vậy tôi có thể tạo kiểu nó. Một cái gì đó như sau thường hoạt động:

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

Nhưng điều này không làm việc cho ChoiceField, tôi nhận được lỗi sau:

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

widget tôi nên sử dụng để thêm một lớp học để tôi ChoiceField?

Trả lời

38

Tôi có thể đọc nhanh của https://docs.djangoproject.com/en/1.4/ref/forms/widgets/

mà rabbited trên về widget - rõ ràng họ là

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

và sau đó mỗi trường mẫu được gắn với một widget - có một chi của:

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

cho ChoiceField, mặc địnhWidget là "Chọn" (như được lưu ý trong liên kết ở trên). Ok, biết widget ngay, để thêm lớp tôi chỉ cần thiết:

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

để dòng cuối cùng của tôi đã kết thúc đọc:

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

Huzzah!

+0

Bạn sẽ có thể chấp nhận câu trả lời của riêng bạn sau một thời gian thời gian nhất định –

+0

Cám ơn này – ajt

3

các ChoiceField sử dụng widget forms.Select

forms.Select(attrs={"name": "select_0","class": "form-control"}) 
Các vấn đề liên quan