Według django.forms.forms
, metoda z Form
__getitem__()
tworzy coś, co nazywa się BoundField
z pola przed wpuszczeniem go, tym samym pozbawiając ją niezależnie od zmiany. Jeśli naprawdę chcesz wstawić więcej funkcjonalności w tym, zastąpić tę metodę, aby robić rzeczy do dziedziny związanej przed wpuszczeniem go:
class MyForm(forms.Form):
def __getitem__(self, name):
boundfield = super(forms.Form,self).__getitem__(name)
boundfield.foo = "bar"
return boundfield
Następnie "bar"
pojawi się na wszystkich polach w tej formie. Możesz także utworzyć funkcję i wywołać ją, aby uczynić ją czymś więcej niż tylko zakodowanym ciągiem znaków.
Podczas gdy bardziej standardowym jest dodawanie kolejnych pól lub dodawanie właściwości do samego formularza, jeśli masz zupełnie nową klasę informacji, które każde pole musi zawierać, może to zrobić za Ciebie.
Innym sposobem, aby dostać to samo jest, aby edytować atrybut pola, a następnie do niego dostęp za pośrednictwem BoundField
„s "field"
atrybut:
class MyForm(forms.Form):
def __init__(self, *args, **kwargs)
super(forms.Form, self).__init__(*args, **kwargs)
self.fields['field_name'].foo = "bar"
Następnie, aby uzyskać dostęp do foo
w szablonie:
{{ form.field_name.field.foo }}
pokrewne: http://stackoverflow.com/questions/2270550/warnings-or-even-info-messages-instead-of-only-errors-in-django – guettli