59
DoesNotExist
is documented here:
The DoesNotExist exception inherits
from
django.core.exceptions.ObjectDoesNotExist,
so you can target multiple
DoesNotExist exceptions.
so you can perfectly well use except ObjectDoesNotExist:
and catch all the model-specific DoesNotExist
exceptions that might be raised in the try
clause, or use except SomeSpecificModel.DoesNotExist:
when you want to be more specific.
If you’re looking for the specific spot in Django’s source code where this attribute is added to model classes, see here, lines 34-37:
# Create the class.
new_class = type.__new__(cls, name, bases, {'__module__': attrs.pop('__module__')})
new_class.add_to_class('_meta', Options(attrs.pop('Meta', None)))
new_class.add_to_class('DoesNotExist', types.ClassType('DoesNotExist', (ObjectDoesNotExist,), {}))
7
DoesNotExist
, just like MultipleObjectsReturned
, is an attribute on a model class. It is added to the model when the model is generated.
EDIT: The metaclass responsible for this process is ModelBase
(django.db.models.base
) and you may look at it to see what is going on.
- [Django]-How can I change a Django form field value before saving?
- [Django]-What's the best way to handle Django's objects.get?
- [Django]-How can I serialize a queryset from an unrelated model as a nested serializer?