ユースケースの最も簡単な方法は、 CSS を使用することです。プレゼンテーションを定義するための言語です。フォームによって生成されたコードを見て、興味のあるフィールドの ID をメモし、CSS を使用してこれらのフィールドの外観を変更します。
ProductFormのフィールドの例long_desc
(フォームにカスタム プレフィックスがない場合):
#id_long_desc {
width: 300px;
height: 200px;
}
2 番目の方法attrs
は、キーワードをウィジェット コンストラクターに渡すことです。
class ProductForm(ModelForm):
long_desc = forms.CharField(widget=forms.Textarea(attrs={'cols': 10, 'rows': 20}))
short_desc = forms.CharField(widget=forms.Textarea)
class Meta:
model = Product
Django documentation で説明されています。
3 番目のアプローチは、newforms の優れた宣言型インターフェイスをしばらく残し、カスタム コンストラクターでウィジェット属性を設定することです。
class ProductForm(ModelForm):
long_desc = forms.CharField(widget=forms.Textarea)
short_desc = forms.CharField(widget=forms.Textarea)
class Meta:
model = Product
# Edit by bryan
def __init__(self, *args, **kwargs):
super(ProductForm, self).__init__(*args, **kwargs) # Call to ModelForm constructor
self.fields['long_desc'].widget.attrs['cols'] = 10
self.fields['long_desc'].widget.attrs['rows'] = 20
このアプローチには、次の利点があります。
- フィールド全体を再定義することなく、モデルから自動的に生成されるフィールドのウィジェット属性を定義できます。
- フォームのプレフィックスには依存しません。