1. ホーム
  2. パイソン

[解決済み] DjangoでCharFieldにプレースホルダーを追加するにはどうすればよいですか?

2022-04-20 15:06:59

質問

例えば、このような非常にシンプルなフォームを考えてみましょう。

class SearchForm(Form):
    q = forms.CharField(label='search')

これはテンプレートでレンダリングされます。

<input type="text" name="q" id="id_q" />

しかし、このままでは placeholder 属性は、このフィールドの値として Search というように、HTMLは次のようになります。

<input type="text" name="q" id="id_q" placeholder="Search" />

できれば、プレースホルダーの値を CharField を辞書のようなものを使ってフォームクラスで使用します。

q = forms.CharField(label='search', placeholder='Search')

これを実現するためには、どうしたらよいでしょうか?

どのように解決するのですか?

をご覧ください。 ウィジェットのドキュメント . 基本的には以下のような感じでしょうか。

q = forms.CharField(label='search', 
                    widget=forms.TextInput(attrs={'placeholder': 'Search'}))

確かに文章は増えますが、分離することでより複雑なケースをよりよく抽象化できるようになります。

を宣言することもできます。 widgets 属性を含む <field name> => <widget instance> に直接マッピングすることができます。 MetaModelForm のサブクラスを作成します。