这是我人生的祸根。 需要更改serializers.py 中的第 845 行,以便在确实发生 TypeError 时更有帮助。
如果您有自定义的 .save() 方法并且出现问题,那么 DRF 只会给您异常消息,这可能与“X 不可迭代”一样有用。 DRF 是否可以包含原始 TypeError 的回溯,或者做一些比吐出默认消息并吞下原始异常更有用的东西?
我很乐意考虑拉取请求,但除此之外,我们应该在这里做不同的事情。 我们包含了原始异常文本,但添加了一些额外的上下文来解释为什么会出现它。 不知道我们是否可以(或想要)保留原始回溯。
我做了一个 PR,我认为你应该在消息中显示原始回溯。 老实说,我认为您根本不应该捕获异常,但我想修改后的消息可能对新用户有所帮助。 然而,它无缘无故地吞下了重要的错误信息,应该改变它。
你好呀,
我真的很想重新打开这个问题。 这确实是在任何重要的应用程序中使用 DRF 最糟糕的部分。 这是我得到的例外:
TypeError: Got a `TypeError` when calling `Document.objects.create()`. This may be because you have a writable field on the serializer class that is not a valid argument to `Document.objects.create()`. You may need to make the field read-only, or override the DocumentSerializer.create() method to handle this correctly.
Original exception text was: 'SafeText' object is not callable.
我知道您试图通过显示该文本来提供帮助,但实际上您正在吞下整个异常,这使得调试和丢弃大部分实际有用的信息变得更加困难。 请考虑我的先生。
最有用的评论
你好呀,
我真的很想重新打开这个问题。 这确实是在任何重要的应用程序中使用 DRF 最糟糕的部分。 这是我得到的例外:
我知道您试图通过显示该文本来提供帮助,但实际上您正在吞下整个异常,这使得调试和丢弃大部分实际有用的信息变得更加困难。 请考虑我的先生。