您的用例最简单的方法是使用 CSS。它是一种用于定义演示的语言。查看表单生成的代码,记下您感兴趣的字段的 id,并通过 CSS 更改这些字段的外观。
ProductForm中的字段示例long_desc
(当您的表单没有自定义前缀时):
#id_long_desc {
width: 300px;
height: 200px;
}
第二种方法是将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 文档中有所描述。
第三种方法是暂时保留新表单的良好声明性界面,并在自定义构造函数中设置小部件属性。
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
这种方法具有以下优点:
- 您可以为从模型自动生成的字段定义小部件属性,而无需重新定义整个字段。
- 它不依赖于表单的前缀。