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()
を呼び出します。
関連
-
Django2.2エラー - AttributeError: ''str'' オブジェクトに ''decode'' 属性がない。
-
django のクエリセット操作
-
[解決済み] django の OneToOneField と ForeignKey の違いは何ですか?
-
[解決済み] djangoモデルのカスタムsave()メソッドでは、新しいオブジェクトをどのように識別する必要がありますか?
-
[解決済み] django-rest-framework の管理者スタイルのブラウズ可能なインターフェイスを無効にする方法は?
-
[解決済み] なぜ django の model.save() は full_clean() を呼び出さないのでしょうか?
-
[解決済み] Django - 外部キーのプロパティでフィルタリングする
-
[解決済み] Django: テンプレート内からセッション変数にアクセスする?
-
[解決済み] テーブルのフィールドから異なる値を選択する
-
[解決済み] djangoでurls.pyから直接名前付きurlパターンにリダイレクトする?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Django のフォームで、あるフィールドを編集できないように readonly (または disabled) にするにはどうしたらいいですか?
-
[解決済み] Django で完全な/絶対的な URL (ドメイン付き) を取得するにはどうすればよいですか?
-
[解決済み] (13: Permission denied) 上流:[nginx]に接続中。
-
[解決済み] Django テンプレート内で現在の URL を取得する方法は?
-
[解決済み] Django で現在ログインしているユーザのユーザ ID を取得する方法は?
-
[解決済み] Django Southを使用して移行履歴をリセットするための推奨される方法は何ですか?
-
[解決済み] Djangoのvalues()の項目名を変更する方法は?
-
[解決済み] dbなしのdjangoユニットテスト
-
[解決済み] DjangoでSELECT COUNT(*) GROUP BYとORDER BYを行うにはどうすればよいですか?
-
[解決済み] あるdjangoアプリから新しいアプリにモデルを移行するにはどうしたらいいですか?