【发布时间】:2021-05-17 23:29:08
【问题描述】:
当从 Django 中的 ForeignKey 字段中获取 ValueError 时,异常会使用字段名称返回响应“Field ...期望一个数字但得到...”。我想更改此异常以使用 verbose_name(如果存在)和字段名称(如果不存在)。如何为所有 ForeignKey 字段覆盖此异常?
https://github.com/django/django/blob/main/django/db/models/fields/__init__.py 中的第 1818 行
def get_prep_value(self, value):
value = super().get_prep_value(value)
if value is None:
return None
try:
return int(value)
except (TypeError, ValueError) as e:
raise e.__class__(
"Field '%s' expected a number but got %r." % (self.name, value),
) from e
【问题讨论】: