次の関数を使用して、保存前の処理を実行できることを知っています。しかし、検証を行うためのリクエストからのテキストフィールド値など、リクエストデータにアクセスするにはどうすればよいですか?
def save_model(self, request, obj, form, change):
# do something for validation
obj.save()
次の関数を使用して、保存前の処理を実行できることを知っています。しかし、検証を行うためのリクエストからのテキストフィールド値など、リクエストデータにアクセスするにはどうすればよいですか?
def save_model(self, request, obj, form, change):
# do something for validation
obj.save()
生のリクエスト データはrequest.POST、通常どおり に保存されます。form.cleaned_dataDjango は既に検証済みなので、にアクセスする方がよいでしょう。
ただし、save_modelメソッドはおそらく検証を行うのに適切な場所ではありません。を発生させた場合ValidationError、例外はキャッチされず、ユーザーは 500 サーバー エラー ページを取得します。このsave_model方法は、データがすでに有効であることがわかっている場合に適しています。たとえば、request.user保存する前にオブジェクトの作成者を設定する場合などです。
カスタム バリデーションを行いたい場合は、モデル フォームを定義し、それをモデル管理者のModelAdmin.form設定で使用することをお勧めします。
これも私を大いに助けました!