2016-05-17 3 views
0

selectpickersのさまざまな選択肢に基づいてトリガーするロジックでいっぱいの(非常に複雑な)HTMLフォームが、対応するフィールドとは全く異なる名前のフィールドを持っています。 Djangoモデルを使用していますが、HTMLフォームとDjangoモデルから送られたデータを処理するには、いくつかのロジックを追加する必要があることがあります。私は恐らくModelFormをDjangoで使用することはできませんが、標準django.forms.Formを使用してHTMLフォームをモデルにマップする例を探していましたが、実際にはそれほど多くは見つかりませんでした。誰かに私にいくつかのヒントを教えてもらえますか?HTMLフォームデータをDjangoモデルにマップする方法

答えて

0

htmlフォームをdjangoモデルにマップすることはできません。最初にモデル・フォームを作成し、htmlでレンダリングする必要があります。

何らかの形でhtmlフォームをモデルにマップしたい場合は、まず、ModelFormをHTMLでレンダリングします。あなたのdjango形式のhtml形式の正確なコピーを作成し、それをhtmlで使用します。あなたの視点でそれをキャッチし、それをモデルのように処理します。しかし、とにかくModelFormを作成する必要があります。

1

あなたのhtmlフォームがすでに存在していて、何とかそのフォームからPOSTデータを読み込むように聞こえます。 djangoのModelFormやform.Formの出力を使わずにhtml形式で結んでしまった様子をさらに前提にせずに、フォームアクションの場所がビューを経由してマップされていれば、ビューはリクエスト.POSTデータ。 Djangoフォーム(モデルまたはフォームベース)を使用していない場合は、ビューで独自の検証を行う必要があります。フォームデータが検証されたら、my_obj = ModelName(field_name1 = form_input_data1、field_name2 = form_input_data2、...)のようにモデルオブジェクトを初期化します。次に、my_obj.save()を実行できます。

ここで、それほど悪くないとしましょう。実際には、フォームとフォームの継承を使用して、モデルと直接関係のないdjango-isticフォームクラスを作成しています。これで、フォーム関連の検証clean_fieldとクリーンなステップなどを使用できるようになりました。内部のすべての組み込みフィールド型djangoが自動的に行います。そして、POSTデータを読み込むときには、構築するdjangoモデルオブジェクトにフォームフィールドを(必要に応じて任意の変換を介して)マップするために必要な処理を行います。デフォルト値とモデルの保存可能性のあるカスタム割り当てを留意してください。起こる。

関連する問題