1. ホーム
  2. django

Django でモデルの save メソッドでバリデーションエラーを発生させる

2023-08-18 16:31:30

質問

モデルのsaveメソッドでバリデーションエラーを適切に発生させ、ユーザーに明確なメッセージを返す方法がよくわかりません。

基本的に、私は"if"のそれぞれの部分がどのように終わるべきか、私がエラーを発生させたい部分と実際に保存する部分がどのように終わるべきかを知りたいと思います。 と実際に保存される部分です。

def save(self, *args, **kwargs):
    if not good_enough_to_be_saved:
        raise ValidationError
    else:
        super(Model, self).save(*args, **kwargs)

それから、例えば値が一意でない場合に Django が自動的に返すような、何が間違っているのかをユーザに正確に伝える検証エラーを送るにはどうしたらいいか知りたいのです。 私は (ModelForm) を使っていて、モデルから全てをチューニングしています。

どのように解決するのですか?

ほとんどの Django ビュー、例えば Django admin は save メソッドでバリデーションエラーを処理できないので、ユーザは 500 エラーを受け取ることになります。

モデルのフォームかモデル上でバリデーションを行い、その際に ValidationError を発生させるべきです。そして save() を呼び出します。