ジャンゴ之forms.ModelForm

通常でDjangoのプロジェクト、それらのほとんどは、私たちの中に書かれてDjangoのモデル密接にマッピングされた形。たとえば、あなたが持っているかもしれブックモデルを、あなたが作成したいフォームのモデルに書籍情報を追加したり編集するためのフォームを。この場合、中のフォーム私たちはモデルでこれらのフィールドを定義したので、フォームフィールドの定義冗長になります。

 

  このような理由から、Djangoは我々からできるように、ヘルパークラスを提供してDjangoのモデルを作成するフォームである、のModelFormを

 

ModelFormサブクラス定義されました

    フォームモデルあなたに基づいて究極の結合、モデルはの対応するフィールドに変換されたフォームフィールド、および操作や、あなたのラベルを生成します。

 

    モデルのテーブルでは、次のとおりです。

クラスブック(models.Model):

    NID = models.AutoField(PRIMARY_KEY =

    タイトル= models.CharField(MAX_LENGTH = 32

    publishDate = models.DateField()

    価格= models.DecimalField(max_digits = 5 decimal_places = 2

    = models.ForeignKeyを公開(する= "公開"to_field = "NID"

    著者= models.ManyToManyField(= '著者'、)

    デフ __str__ 自己):

        返す自己.TITLE

 

ModelForm クラスの書き込み:

クラス BookForm(forms.ModelForm):

    クラスメタ:

        モデル= models.Book

        フィールド= "__all__"

        ラベル= {

            "タイトル"" 书名"

            "価格"" 价格"

        }

        ウィジェット= {

            "パスワード":forms.PasswordInput(ATTRSの= { "クラス""C1" })、

 

            "publishDate":forms.DateInput(ATTRSの= { "タイプ""日付" })、

        }

クラスのメタ共通パラメータ:

= models.Bookモデル  対応するモデルクラス

=フィールド[] 指定されたフィールド

=フィールド「__all__」  #のフィールドが変更された場合は、__all__、リストされたすべてのフィールドを表すためにあります

=除外[]  負のフィールド

=ラベル{}  #1 メッセージ

= help_texts {}  ヘルプ情報

= {ウィジェット#のカスタムプラグ

            "パスワード":forms.PasswordInput(ATTRSの= { "クラス""C1" })、

            "publishDate":forms.DateInput(ATTRSの= { "タイプ""日付" })、

        }

 = {error_messages、 カスタムエラーメッセージ

    「タイトル」:{ 「必要」空にすることはできません、...}  各フィールドのすべてのエラーを書き込むことができます

}

 続いてforms.ModelForm時のクラス、モデルOnetoone多対多プロパティは自動的に変換されModelChoiceFieldModelMultipleChocieField自動的にデータを読み込みます。 

 

ModelFormサブクラス使用中のデータ・コンポーネントを追加し、それを直接使用することができる()保存方法を使用して保存するインスタンス化するとき第2の目的は、指定されたキーワードのパラメータを持っている場合、時間法をインスタンスを更新操作と比較して、!

 

おすすめ

転載: www.cnblogs.com/open-yang/p/11223192.html