Según django.forms.forms
, el método de un Form
__getitem__()
crea algo llamado BoundField
fuera del campo antes de devolverlo, despojando así de cualquier cambio que ha realizado. Si realmente desea insertar más funcionalidad en eso, se sobrepase el método de hacer cosas para el campo enlazado antes de devolverlo:
class MyForm(forms.Form):
def __getitem__(self, name):
boundfield = super(forms.Form,self).__getitem__(name)
boundfield.foo = "bar"
return boundfield
Entonces, "bar"
aparecerá para todos los campos de esa forma. También puede hacer una función y llamarla en su lugar, para hacerla más que solo una cadena codificada.
Si bien es más estándar agregar más campos o agregar propiedades al formulario en sí, si tiene toda una nueva clase de información que debe contener cada campo, puede hacerlo por usted.
Otra forma de conseguir lo mismo es editar un atributo del campo, luego acceder a ella a través de la BoundField
's "field"
atributo:
class MyForm(forms.Form):
def __init__(self, *args, **kwargs)
super(forms.Form, self).__init__(*args, **kwargs)
self.fields['field_name'].foo = "bar"
A continuación, acceder a foo
en una plantilla:
{{ form.field_name.field.foo }}
relacionadas: http://stackoverflow.com/questions/2270550/warnings-or-even-info-messages-instead-of-only-errors-in-django – guettli