【发布时间】:2015-01-12 16:05:31
【问题描述】:
场景非常简单:
我有一个模型,其中包含一些必填字段。假设其中一个是TextField,它不能是blank。
我还有一个代表该模型的ModelSerializer(Django Rest Framework)。
当使用空字符串通过序列化程序设置该字段时,返回的错误来自模型本身 (This field can't be blank)。
我想仅在序列化程序级别覆盖错误消息,而无需显式重新指定序列化程序中的每个字段(我认为这违反了 DRY 原则),必须编写一个validate_ 方法每个字段并提出我自己的ValidationError 或必须更改Model 级别中的错误消息(因为有时错误消息的上下文对我的用例很重要,应相应地给出错误消息)。
换句话说,有没有办法像ModelForm一样简单地覆盖序列化程序级别的错误消息:
class MyModelForm(ModelForm):
class Meta:
model = MyModel
error_messages = {"field1": {"required": _("For some reason this is a custom error message overriding the model's default")}}
【问题讨论】:
-
DRF 在验证时调用 django 字段验证器。所以错误将来自这里,而不是来自 DRF。这个想法是尝试在模型或字段级别指定错误消息,因为我可以看到没有办法用 DRF 覆盖这些消息。
标签: django django-rest-framework