【发布时间】:2010-11-16 15:06:57
【问题描述】:
以下类继承自 Textarea 小部件,并具有 javascript 代码,可显示用户可以在 textarea 中输入的字符数。
class TextAreaWithCharCounter(forms.Textarea):
class Media:
js = ('js/jquery.charcounter.js',)
def render(self, name, value, attrs = None):
id = attrs['id']
max_length = self.attrs.get('max_length', 200)
output = super(TextAreaWithCharCounter, self).render(name, value, attrs)
output += mark_safe(u'''
<script type="text/javascript">
$("#%s").charCounter(%d, {classname:"charcounter"});
</script>'''%(id, max_length))
return output
表单代码相关部分如下:
class MyForm(forms.Form):
foo = forms.CharField(max_length = 200, widget = TextAreaWithCharCounter(attrs={'max_length':200}))
...
您可以看到我将 max_length 参数传递了两次,一次用于字段,一次用于小部件。更好的方法可能是从小部件内部访问表单字段并获取其 max_length 属性,以便小部件不需要 max_length 参数。我该怎么做?
【问题讨论】:
标签: django django-forms