Django ObjectDoesNotExistとDoesNotExist: エラー処理と使い分け
Djangoにおいて、ObjectDoesNotExistとDoesNotExistは例外クラスであり、通常はデータベースのクエリでオブジェクトが存在しない場合に捕捉するために使用されます。
ObjectDoesNotExistは、オブジェクトが見つからなかった場合に単一のオブジェクトクエリをキャッチするために使用されるdjango.core.exceptions.ObjectDoesNotExistの例外クラスです。例:
from django.core.exceptions import ObjectDoesNotExist
from myapp.models import MyModel
try:
obj = MyModel.objects.get(id=1)
except ObjectDoesNotExist:
print("Object does not exist")
DoesNotExistは、通常、クエリセットがオブジェクトを返さなかった場合にキャッチするために使用されるdjango.core.exceptions.DoesNotExistの例外クラスです。例:
from django.core.exceptions import DoesNotExist
from myapp.models import MyModel
try:
obj = MyModel.objects.filter(name='myname').get()
except DoesNotExist:
print("Object does not exist")
これらの2つの例外クラスを使用する際には、通常、データベースクエリの後にtry-exceptステートメントを使用して例外をキャッチし、オブジェクトが存在しない場合に処理します。