Django: ModelFormクラスの設定あれこれ

2010/03/21

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クラスを使ってフォームを自動生成すれば、フォームのヘルプメッセージとして表示されるようになります。

blog comments powered by Disqus
カテゴリー