2011-08-29 13 views
14

Mam formularz Django, który jest częścią strony. Powiedzmy, że mam pole:Jak ustawić niestandardowe atrybuty HTML w formularzach Django?

search_input = forms.CharField(_(u'Search word'), required=False) 

Mogę uzyskać do niego dostęp tylko w szablonie przez {{ form.search_input }}. Jak ustawić niestandardowe atrybuty HTML (takie jak nazwa i wartość)? Chciałbym znaleźć elastyczne rozwiązanie, które pozwoliłoby mi dodawać wszelkie potrzebne niestandardowe atrybuty do wszystkich typów pól.

znalazłem https://docs.djangoproject.com/en/dev/ref/forms/widgets/#widget

Ale używając attrs daje mi (jeżeli są stosowane z Charfield):

__init__() got an unexpected keyword argument 'attrs' 

Odpowiedz

17

Można zmienić widżet na Charfield aby osiągnąć efekt, którego szukasz.

search_input = forms.CharField(_(u'Search word'), required=False) 
search_input.widget = forms.TextInput(attrs={'size': 10, 'title': 'Search',}) 
8

Możesz też spróbować:

search_input = forms.CharField(
    _(u'Search word'), 
    required=False, 
    widget=forms.TextInput(attrs={'size': 10, 'title': 'Search',}) 
) 

Jest to udokumentowane w sekcji zatytułowanej Styling widget instances.

Powiązane problemy