一直在Django中,我看到DoesNotExistdb.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/

10-11 01:23