覆盖 Django ChoiceField 中的 class 属性 / select

Overriding class attribute in Django ChoiceField / select

我想将 class="form-control" (Bootstrap 3) 添加到我的自定义 Django 表单中。

我的字段需要在我的模板中呈现如下(只是为了表明我没有使用 {{form}}:

{% for field in form.visible_fields %}
    {{ field }}
{% endfor %}

我意识到 Meta class 应该用来覆盖 widgets,例如TextField:

class Meta:
    ...
    widgets = {
        'info': forms.TextInput(attrs={'class': 'form-control'}),
    }

这有效,但我的表单元素之一是 <select> 字段。

我尝试了以下方法,但没有成功。与以下:

widgets = {
     'tags': forms.ChoiceField(attrs={'class': 'form-control'}),
}

我得到:

__init__() got an unexpected keyword argument 'attrs'

您可以简单地使用 forms.Select():

widgets = {
    'tags': forms.Select(attrs={'class': 'form-control'}), 
    'info': forms.TextInput(attrs={'class': 'form-control'}),
}