Secondo django.forms.forms
, il metodo di un Form
__getitem__()
crea qualcosa chiamato un BoundField
fuori dal campo prima di restituirlo, spogliando così di tutte le modifiche che hai fatto. Se davvero si vuole inserire più funzionalità in questo, ignorare che il metodo di fare cose per il campo associato prima di restituirlo:
class MyForm(forms.Form):
def __getitem__(self, name):
boundfield = super(forms.Form,self).__getitem__(name)
boundfield.foo = "bar"
return boundfield
Poi, apparirà "bar"
per tutti i campi di quella forma. Puoi anche creare una funzione e chiamarla invece, per renderla più di una semplice stringa hard-coded.
Mentre è più normale aggiungere più campi o aggiungere proprietà al modulo stesso, se si dispone di una nuova classe di informazioni che ogni campo deve contenere, è possibile farlo per te.
Un altro modo per ottenere la stessa cosa è quella di modificare un attributo del campo, quindi accedervi tramite "field"
l'attributo 's il BoundField
:
class MyForm(forms.Form):
def __init__(self, *args, **kwargs)
super(forms.Form, self).__init__(*args, **kwargs)
self.fields['field_name'].foo = "bar"
Poi, per accedere foo
in un modello:
{{ form.field_name.field.foo }}
correlati: http://stackoverflow.com/questions/2270550/warnings-or-even-info-messages-instead-of-only-errors-in-django – guettli