一直在Django中,我看到DoesNotExist
像db.models.fields.related.py
一样被提高。不是ObjectDoesNotExist
中定义的django.core.exceptions
,而是DoesNotExist
。该异常类在哪里定义,或者我没有完全理解异常?我检查了它是否没有异常(至少不是我所知道的)。我很困惑。
注意:它也是免费的,作为模型子类实例的属性,例如`self.someforeignkey.DoesNotExist。这怎么可能?
最佳答案
DoesNotExist
已记录为here:
因此,您可以很好地使用except ObjectDoesNotExist:
并捕获DoesNotExist
子句中可能引发的所有特定于模型的try
异常,或者在需要更具体时使用except SomeSpecificModel.DoesNotExist:
。
如果要在Django源代码中查找将属性添加到模型类的特定位置,请参见here,第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,), {}))
关于django - Django: “DoesNotExist”来自哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2143506/