来自django-rest-framework文档:
每个序列化程序字段类构造函数至少采用这些参数。一些Field类采用其他特定于字段的参数,但应始终接受以下内容:
- error_messages - 错误消息的错误代码字典。
我试图覆盖" does_not_exist" SlugRelatedField中的错误消息,如:
example = SlugRelatedField(slug_field='label', error_messages={"does_not_exist": "Some custom error message."})
并收到错误:
并非在字符串格式化期间转换所有参数
非常感谢任何关于如何进行的提示。
答案 0 :(得分:0)
错误消息的呈现方式如下:
raise ValidationError(self.error_messages['does_not_exist'] %
(self.slug_field, smart_text(data)))
因此它会强制您包含两个%s
占位符。
这是默认值:
'does_not_exist': _("Object with %s=%s does not exist."),
如果你想省略%s
个参数,那么除了覆盖整个from_native
之外别无他法。
答案 1 :(得分:0)
自从提出这个问题以来,我认为django-rest-framework改变了它的工作方式。
使用DRF版本3.8.2,SlugRelatedField
的默认错误消息现在为:
default_error_messages = {
'does_not_exist': _('Object with {slug_name}={value} does not exist.'),
'invalid': _('Invalid value.'),
}
我能够通过以下方法成功地覆盖dos_not_exist错误:
field = SlugRelatedField(
error_messages={
'does_not_exist': 'Foo error field={value} does not exist.',
}
)
请注意,我仅使用DRF插入字符串之一的值-value
,而不使用slug_name
。效果很好。