1. ホーム
  2. python

[解決済み] なぜ django の model.save() は full_clean() を呼び出さないのでしょうか?

2022-04-22 23:51:27

質問

django の orm が、モデルフォームの一部として保存されない限り、モデルに対して 'full_clean' を呼び出さない正当な理由があるかどうか、誰か知っていれば教えてください。

モデルの save() メソッドを呼び出したときに、full_clean() が自動的に呼び出されないことに注意しましょう。手動で作成したモデルに対してワンステップのモデルバリデーションを実行したい場合は、手動で呼び出す必要があります。 django のフルクリーンに関するドキュメント

(注意: 引用は Django 1.6 用に更新されました。以前の django ドキュメントには ModelForms についても注意書きがありました)。

この挙動を望まない正当な理由があるのでしょうか?もしモデルにバリデーションを追加するのに時間がかかったら、モデルが保存されるたびにバリデーションが実行されることを望むと思うのですが。

すべて正常に動作させる方法はわかっているので、説明を求めているのです。

解決方法は?

AFAIKは、これは後方互換性のためである。また、除外されたフィールドを持つモデルフォーム、デフォルト値を持つモデル、pre_save() シグナルなどにも問題があります。

あなたが興味を持つかもしれない情報源。