Подтвердить что ты не робот

Как добавить "класс" в ChoiceField в Django?

У меня есть ChoiceField в моей форме Django:

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

Я хотел бы добавить в поле class attr, чтобы я мог его стилизовать. Обычно работает что-то вроде следующего:

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

Но это не работает для ChoiceField, я получаю следующую ошибку:

TypeError: init() получил неожиданный аргумент ключевого слова 'attrs'

Что widget следует использовать для добавления класса в свой ChoiceField?

4b9b3361

Ответ 1

Я быстро прочитал https://docs.djangoproject.com/en/1.4/ref/forms/widgets/

которые ухаживали за виджетами - видимо, они

Представление Djangos элемента ввода HTML. Виджет обрабатывает рендеринг HTML

а затем каждое поле формы привязано к виджету - прочитайте:

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

для ChoiceField, defaultWidget - "Выбрать" (как указано в приведенной выше ссылке). Хорошо, зная правильный виджет, добавить класс, который мне просто нужен:

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

чтобы моя последняя строка закончила чтение:

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

ура!

Ответ 2

ChoiceField использует формы. Выберите виджет

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