更改在Django中使用ModelForm创建的表单元素的宽度

如果使用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

这种方法有以下优点:

  • 您可以为从模型自动生成的字段定义小部件属性,而无需重新定义整个字段
  • 它不依赖于表单的前缀

发表评论