【Django】TextFieldフォームのデフォルト幅や高さを変える
- Python -
2020.05.05
こんな風に、Djangoのモデルでdescriptionという名前のTextFieldを定義していて、
こんな風に、ModelFormを作ったはいいものの、
この結果テンプレートに表示されるdescriptionの「textareaの高さや幅をどうやって変えるのか」という地味な疑問がわいたので、調べた結果をメモ。
DjangoのTextFieldフォームのデフォルト幅や高さを変えるには
フォームをどちらのクラスで作るかによって若干の違いがあります。
- .forms.ModelFormクラスで作る
- .forms.Formクラスで作る
1. forms.ModelFormクラスの場合
以下、8行目以降を参照してください。
このように、Metaクラスにwidgets属性を追加してrows、colsの値を変更することで自由に高さ、幅を変更できるようになります。
forms.pyclass ArticleForm(ModelForm):
class Meta:
model = Article
fields = ['slug', 'title', 'content',
'category', 'status', 'description']
### 追加 ###
widgets = {
'description': forms.Textarea(attrs={'rows':4, 'cols':15}),
}
参考公式ドキュメント:Overriding the default fields
2. forms.Formクラスの場合
以下のようにwidgetを設定します。
forms.pyclass CommentForm(forms.Form):
comment = forms.CharField(widget=forms.Textarea(attrs={'cols': '80', 'rows': '10'}))