Ответ 1
DoesNotExist
документируется здесь:
Наследование исключений DoNotExist из django.core.exceptions.ObjectDoesNotExist, так что вы можете Исключения exceptNotExist.
чтобы вы могли отлично использовать except ObjectDoesNotExist:
и улавливать все исключения DoesNotExist
для модели, которые могут быть подняты в предложении try
, или использовать except SomeSpecificModel.DoesNotExist:
, когда вы хотите быть более конкретным.
Если вы ищете конкретное место в исходном коде Django, где этот атрибут добавлен в классы моделей, см. здесь, строки 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,), {}))