2011-08-29 17 views
14

私はページの一部であるDjangoフォームを持っています。djangoフォームでカスタムHTML属性を設定するにはどうすればよいですか?

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

私は{{ form.search_input }}経由でのみテンプレートでそれにアクセスすることができます。私は、フィールドを持って言うことができます。カスタムHTML attrs(名前や値など)を設定する方法は?私はすべてのタイプのフィールドに必要なカスタム属性を追加できる柔軟なソリューションを探したいと思います。

私はhttps://docs.djangoproject.com/en/dev/ref/forms/widgets/#widget

が見つかりましたが(CharFieldですと使用した場合)、attrsにを使用して、私を与える:

__init__() got an unexpected keyword argument 'attrs' 

答えて

17

あなたが探している効果を達成するためにCharFieldです上のウィジェットを変更することができます。

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

また、これを試すことができます。これはStyling widget instances題したセクションに記載されて

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

6

古い質問が、別の選択肢を探している人、永遠に、これもあります:テンプレートのみのソリューションを使用してもあります

from django.forms import ModelForm, Textarea 
from myapp.models import Author 

class AuthorForm(ModelForm): 
    class Meta: 
     model = Author 
     fields = ('name', 'title', 'birth_date') 
     widgets = { 
      'name': Textarea(attrs={'cols': 80, 'rows': 20}), 
     } 
関連する問題