Djangoでモデル定義から直接フォームクラスを自動生成する方法については、ModelFormクラスを用いればよいと解説してきました。
ModelFormカテゴリの記事一覧
しかし、モデルではフィールド定義してるけど、フォームを表示する際は表示する必要のないものや、ヘルプメッセージをどうやって表示すればよいのか?など、使うときに迷うこともあります。
今回は、このような細やかな要求をどうやって実現するのかについて、ノウハウメモ的に解説していきます。
フォームを作成する際に、非表示にしたいフィールドがある場合は、以下のように「exclude」メンバをタプル形式で指定します。
class Meta:
exclude = ('slug', 'user_id')
上記のように設定することで、slug, user_idフィールドはフォーム表示時にHTMLに現れないようになります。
次に、ヘルプテキストについてです。
ヘルプテキストは、フォームの「help_text」属性と同じものがmodelにも定義されているので
models.CharFields(help_text=_('here is help'))
と指定しておけば、OKです。
モデル側で上記のようにヘルプを定義しておき、ModelFormクラスを使ってフォームを自動生成すれば、フォームのヘルプメッセージとして表示されるようになります。