La clase más adelante hereda de la widget de Área de texto y características de código javascript que muestra cuántos caracteres más un usuario puede entrar en un área de texto.Django - ¿cómo puedo acceder al campo de formulario desde el interior de un widget personalizado
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
La parte pertinente del código del formulario es el siguiente:
class MyForm(forms.Form):
foo = forms.CharField(max_length = 200, widget = TextAreaWithCharCounter(attrs={'max_length':200}))
...
Se puede ver que me pase el argumento max_length
dos veces, una para el campo y otro para el widget. Una mejor forma puede ser acceder al campo de formulario desde dentro del widget y obtener su atributo max_length, de modo que el widget no requiera un argumento max_length. ¿Cómo puedo hacer eso?
usted ha hecho, gracias. – shanyu