如果使用ModelForm创建textarea表单元素,如何更改其宽度
以下是我的产品类别:
类产品形式(模型形式):
long_desc=forms.CharField(widget=forms.Textarea)
short_desc=forms.CharField(widget=forms.Textarea)
类元:
型号=产品
和模板代码
{f的%形式为%}
{{f.name}}:{{f}
{%endfor%}
f
是实际的表单元素
用例最简单的方法是使用CSS。这是一种用于定义表示的语言。查看表单生成的代码,注意您感兴趣的字段的ID,并通过CSS更改这些字段的外观
ProductForm中的long\u desc
字段示例(当表单没有自定义前缀时):
#id_long_desc{
宽度:300px;
高度:200px;
}
第二种方法是将attrs
关键字传递给小部件构造函数
类产品形式(模型形式):
long_desc=forms.CharField(widget=forms.Textarea(attrs={'cols':10,‘rows':20}))
short_desc=forms.CharField(widget=forms.Textarea)
类元:
型号=产品
Django文档对此进行了描述
第三种方法是暂时离开newforms的声明式界面,并在自定义构造函数中设置小部件属性
类产品形式(模型形式):
long_desc=forms.CharField(widget=forms.Textarea)
short_desc=forms.CharField(widget=forms.Textarea)
类元:
型号=产品
#布莱恩编辑
定义初始化(self,*args,**kwargs):
super(ProductForm,self).\uuuuu init.\uuuu(*args,**kwargs)#调用ModelForm构造函数
self.fields['long_desc'].widget.attrs['cols']=10
self.fields['long_desc'].widget.attrs['rows']=20
这种方法有以下优点:
- 您可以为从模型自动生成的字段定义小部件属性,而无需重新定义整个字段
- 它不依赖于表单的前缀