私は、特に管理者からモデルを保存するときに実行するいくつかのアクションがあります。いくつかのフィールドを大文字にして、フィールドまたはフィールドのどちらかが満たされていることを確認します。私はフィールドスラッグも作成します。ここでは、これらはcleanとsave関数をオーバーライドするように分割されています。今は動作しますが、それぞれをいつ使うのが好きです。私はドキュメントを見て、いつ使うべきかを具体的に見つけることができませんでした。Djangoはモデルをクリーン()とセーブ()をオーバーライドする
24
A
答えて
30
妥当性検査に関連する作業を行い、入力を解析/変更する/そうでなければクリーンアップする必要があります。フィールドを大文字にし、スラッグを生成することができます。また、cleanを使用して、post_type
のようなフィールドをプロキシモデルの特定の値に強制します。 django.core.exceptions.ValidationError('error text')
をきれいにすると、'error text'
がform.non_field_errors
に追加されます。
保存は、モデルが実際に保存される方法を変更する場所です。たとえば、私は保存を使ってアップロードされた画像を作っています。 ValidationError
はここで上げても捕まえられません。その2つの間で最も重要な実用的な違いだと思います。
関連する問題
- 1. Django。モデルの保存をオーバーライド
- 2. ManyToManyFieldでDjangoモデルのsaveメソッドをオーバーライドするときの問題
- 3. Django:子のフィールドラベルまたはhelp_textをオーバーライドするモデル
- 4. Django - モデルのフィルタをオーバーライドする方法は?
- 5. djangoモデルでNULLを許可するフィールドをオーバーライドします
- 6. Django、動作のオーバーライド管理モデル
- 7. Djangoモデルのフィールド属性のオーバーライド
- 8. Djangoモデル:フィールド戻り値のオーバーライド
- 9. すべてのモデルでDjangoのadmin.ModelAdmin関数をオーバーライドします
- 10. django ModelAdmin.get_readonly_fields()をオーバーライドするKeyError
- 11. Django - cleaned_dataをオーバーライド
- 12. Django ModelFormはクリーンではない
- 13. モデルのdjangoのRelatedManagerをオーバーライドしてください
- 14. node.js、mongodbのセーブとロードをテストする
- 15. Django ImageFieldファイルコリジョンコードをオーバーライド
- 16. Django、ManyToManyFieldをオーバーライドします。
- 17. OpenCVヒストグラムデータをロード/セーブする
- 18. C++ Boost.serializationとシンプルロード/セーブ
- 19. Djangoはauth_views.logoutをオーバーライドします
- 20. djangoはstartapp | projectコマンドをオーバーライドします
- 21. AbstractBaseUserを拡張したdjangoモデル保存関数をオーバーライドします
- 22. Django allauth clean_usernameとclean_email関数をオーバーライド
- 23. Djangoのモデル:Djangoのモデルでは、ユーザーとフォロワー
- 24. Djangoモデルの継承:子クラスのオーバーライド制限
- 25. gemでモデルをオーバーライドし、コールバックとメソッドを追加する
- 26. Django Override Adminグループでカスタムデータをオーバーライドする
- 27. DjangoのRelatedManagerメソッドをオーバーライドする
- 28. Django:カスタムフォームの__init__をオーバーライドする
- 29. 関数をオーバーライドするためだけにdjangoモデルを継承する方法は?
- 30. オーバーライドpartial_update(PATCH DJANGO)
ああ、私のキーボードの右の単語を盗んだ。いい答え。私が追加しようとしている唯一のことは、 'ValidationError'の良い例があるドキュメントへのリンクです:https://docs.djangoproject.com/en/dev/ref/models/instances/#django .db.models.Model.clean –
django.forms.ValidationErrorではなく、django.core.exceptions.ValidationError – benjaoming
良いキャッチです。私はちょうど常にフォームからインポートしたと思います(core.exceptionsからインポートします)。答えを更新する。 – dokkaebi