0

次の関数を使用して、保存前の処理を実行できることを知っています。しかし、検証を行うためのリクエストからのテキストフィールド値など、リクエストデータにアクセスするにはどうすればよいですか?

    def save_model(self, request, obj, form, change):
        # do something for validation 
        obj.save()
4

2 に答える 2

3

生のリクエスト データはrequest.POST、通常どおり に保存されます。form.cleaned_dataDjango は既に検証済みなので、にアクセスする方がよいでしょう。

ただし、save_modelメソッドはおそらく検証を行うのに適切な場所ではありません。を発生させた場合ValidationError、例外はキャッチされず、ユーザーは 500 サーバー エラー ページを取得します。このsave_model方法は、データがすでに有効であることがわかっている場合に適しています。たとえば、request.user保存する前にオブジェクトの作成者を設定する場合などです。

カスタム バリデーションを行いたい場合は、モデル フォームを定義し、それをモデル管理者のModelAdmin.form設定で使用することをお勧めします。

于 2012-06-14T13:50:19.397 に答える
0

カスタムフォームの検証

これも私を大いに助けました!

于 2012-06-15T06:31:20.237 に答える