使用django.contrib.comments,我定义了一个自定义评论应用。我想覆盖文本区域小部件,以便文本框显得更小。
所以我创造了这个:
#forms.py
class CustomCommentForm(CommentForm):
#...otherstuff...
comment = forms.CharField(label=_('Comment'),
widget=forms.Textarea(attrs={'rows':4}),
max_length=COMMENT_MAX_LENGTH)
但我真的不想重新定义评论字段。我想重新定义该字段使用的小部件。即只有ModelForms可以做的事情:
class Meta:
widgets = {
'comment': Textarea(attrs={'rows': 4}),
}
有没有办法在不重新定义字段的情况下重新定义小部件?或者我应该使用CSS设置高度?
答案 0 :(得分:1)
您是正确的,您只能将widgets
选项用于模型表单的Meta
类。
但是,您无需重新定义整个comment
字段。相反,覆盖表单的__init__
方法并在那里更改字段widget
。
class CustomCommentForm(CommentForm):
#...otherstuff...
def __init__(self, *args, **kwargs):
super(CustomCommentForm, self).__init__(*args, **kwargs)
self.fields['comment'].widget = forms.Textarea(attrs={'rows':4})