Согласно django.forms.forms
, метод __getitem__()
для Form
создает нечто, называемое BoundField
, из поля перед возвратом, таким образом удаляя его из любых изменений, которые вы внесли. Если вы действительно хотите добавить больше функциональности, переопределите этот метод, чтобы выполнить какие-либо действия в связанном поле, прежде чем возвращать его:
class MyForm(forms.Form):
def __getitem__(self, name):
boundfield = super(forms.Form,self).__getitem__(name)
boundfield.foo = "bar"
return boundfield
Затем, "bar"
появится для всех полей в этой форме. Вы также можете создать функцию и вызвать ее, чтобы сделать ее не просто жестко заданной строкой.
Хотя более стандартно добавлять дополнительные поля или добавлять свойства к самой форме, если у вас есть целый новый класс информации, который должно содержать каждое поле, это может сделать это для вас.
Другой способ получить то же самое - отредактировать атрибут поля, а затем получить к нему доступ через атрибут BoundField
"field"
:
class MyForm(forms.Form):
def __init__(self, *args, **kwargs)
super(forms.Form, self).__init__(*args, **kwargs)
self.fields['field_name'].foo = "bar"
Затем для доступа к foo
в шаблоне:
{{ form.field_name.field.foo }}