Виджеты для ChoiceField в modelform
Я использую modelform для своей формы Post
и использую стартовый код bootstrap в качестве base.html
, но так как я использую {% csrf_token %} {{form.as_p}}
на своей странице add_blog
, bootstrap не работает и поэтому ему требуется class='form-control'
, мне удалось сделать это для всех моих полей, кроме Choice input, если я включаю моего автора (поле выбора) в виджеты, я получаю TypeError: init() получил неожиданный аргумент ключевого слова 'attrs'
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ("title", "title_tag", "author", "body")
widget = forms.Select(attrs={"class": "form-control"})
widgets = {
'title': TextInput(attrs={'class': 'form-control'}),
'title_tag': TextInput(attrs={'class': 'form-control'}),
'body': Textarea(attrs={'class': 'form-control'}),
'author': ChoiceField(attrs={'class': 'form-control'})
}
А ChoiceField
[Django-doc] - это поле формы, а не виджет формы. Виджет по умолчанию ChoiceField
- это Select
[Django-doc]. Таким образом, вы можете указать использовать этот виджет с:
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('title', 'title_tag', 'author', 'body')
widgets = {
'title': TextInput(attrs={'class': 'form-control'}),
'title_tag': TextInput(attrs={'class': 'form-control'}),
'body': Textarea(attrs={'class': 'form-control'}),
'author': Select(attrs={'class': 'form-control'})
}