questionのサプリメントでビジネスロジックをモデルに含める必要がある場合、モデルからエラーメッセージを返すにはどうすればよいですか?モデルからエラーメッセージを返す方法は?
def save(self, *args, **kwargs):
if <some condition>:
#return some error message to the view or template
questionのサプリメントでビジネスロジックをモデルに含める必要がある場合、モデルからエラーメッセージを返すにはどうすればよいですか?モデルからエラーメッセージを返す方法は?
def save(self, *args, **kwargs):
if <some condition>:
#return some error message to the view or template
Pastylegs正しいですが、あなたはsave
方法でロジックのようなものをやってはいけません。 Djangoには、保存する前にvalidating model instancesの組み込みシステムがあります。これを使用し、必要に応じてValidationError
を呼び出す必要があります。
ありがとう、私は今日の午後遅くそれを試してみるでしょう。 – radztech
例外を発生させることは、あなたが話しているプログラムロジックエラー( 'ビジネスロジック'のエラー)を報告する方法です。 、https://docs.djangoproject.com/en/1.3/ref/exceptions/、プラスあなたはまた、標準のPythonの例外を使用することができます。
from django.core.exceptions import SomeException
def save(self, *args, **kwargs):
if <some condition>:
raise SomeException('your message here')
あなたがここにジャンゴFPR可能な例外を見つけることができます:あなたはちょうどpastylegsが提案しているとして(SomeExceptionは単なるプレースホルダであることに注意してください)、例外を発生させることができますあなたはここに書類を見つけることができます:http://docs.python.org/library/exceptions.html
あなたの問題を説明する例外を見つけることをお勧めします。もしあなたが正確に何を持っているかを覚えていないときにそのエラーが数週間で現れるならば、今行っている。
この答えは、Pythonの観点からは問題ありませんが、Djangoには本当に適切ではありません。ほとんどすべてのDjangoビューは、saveメソッドが呼び出される前にインスタンスが有効であるという前提で記述されています。したがって、ビューは例外を捕捉せず、ユーザーには500サーバーエラーメッセージが表示されます。 Djangoでの正しいアプローチについては、Danielの答えを参照してください。 – Alasdair
ビジネス・ロジック(モデル、モデル・マネージャなど)は、ビュー・レベルで捕捉可能な例外と、ユーザーに報告された意味のあるエラー(または何らかのエラー処理)を単に発生させることができます。 –