POST リクエストを処理し、新しいオブジェクトを作成しようとするビューがあります。ただし、POST されたデータの一部が無効であることはわかっています...しかし、それを修正して先に進み、オブジェクトを作成したいと考えています。
ModelForm でデータを「修正」できる唯一の方法は、「is_valid()」フォームを作成することです。これを行うには、POST データを使用してフォームを作成するか、既存のインスタンスを使用してフォームを作成します。残念ながら、POST データを使用すると、その一部が無効であるため、フォームが検証されず、フォーム内のデータにアクセスして修正することができません。既存のインスタンスで作成した場合、これは機能しますが、フォームが表示されると、何らかの理由で残りのエラーは無視されます (したがって、Web ページには表示されません)。 POST データからモデル フォームを取得し、インスタンスを提供しますが、これは役に立たないようです。さらに、POST データを変更 (のコピー) して修正し、「POST データを修正しました。この種の作品は、私のフォームに ImageFields がいくつかあることを除いて、無視されているようです。
どんな助けでも大歓迎です。私は無駄に見つけることができるすべての良いページを見てきました.
おそらくこれを行うためのより良い方法がありますか?私が解決しようとしている問題は、ImageFields を含むモデルが必要だということです。初めてフォームを作成するとき、ユーザーは各フィールドの画像を「アップロード」する必要があります。ただし、フィールドのいずれかの画像を更新しない場合は、新しいフォームに、画像がアップロードされていないフィールドに [画像のアップロード] ボタンを表示し、画像の画像名を含むテキスト フィールドだけを表示する必要があります。アップロードされたもの。
2010 年 9 月 15 日編集:
わかりました、上記の質問のすべてを次のように単純化できると思います。
デフテスト(リクエスト): test_form = ユーザープロファイルフォーム() 有効な = test_form.is_valid() return render( 'testing.tmpl', locals(), request )
上記のコードがレンダリングされると、「有効」は (予想どおり) False として表示されますが、「test_form」はエラーなしでレンダリングされます。モデルとモデル フォームに関するドキュメントを読みました (おそらく理解していない場合)。ほとんどの場合、指定された「インスタンス」でモデル フォーム (私の場合はユーザー プロファイル フォーム) が作成されます。ただし、1) 私はまだインスタンスを持っていません。2) インスタンス化されていないフォームにエラーが表示されることを期待しています。私が見逃しているものがあると確信しています。照らしてください。:)
もう1つ、おそらく上記の答えがとにかく答えますが、私が知る限り、is_valid()呼び出しは、UserProfileForm用に定義した「clean()」関数を呼び出すことになっています。ただし、(Python の第一人者ではありません) clean() の先頭に「raise ValidationError()」を配置しましたが、コードを実行してもエラーは表示されません。考え?
更新: 私は問題を把握しました。答えは以下のとおりです。ありがとう!