覆盖 SlugRelatedField 上的 default_error_messages

mme*_*dal 2 django django-rest-framework

来自 django-rest-framework 文档:

每个序列化器字段类构造函数至少采用这些参数。一些 Field 类采用额外的、特定于字段的参数,但应始终接受以下参数:

  • error_messages - 错误信息的错误代码字典。

我试图覆盖 SlugRelatedField 中的“does_not_exist”错误消息,如下所示:

example = SlugRelatedField(slug_field='label', error_messages={"does_not_exist": "Some custom error message."})
Run Code Online (Sandbox Code Playgroud)

并收到错误:

并非所有参数都在字符串格式化期间转换

任何有关如何进行的提示将不胜感激。

Mod*_*ech 8

我认为自从提出这个问题以来,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.'),
}
Run Code Online (Sandbox Code Playgroud)

我能够通过以下方式成功覆盖does_not_exist错误:

field = SlugRelatedField(
    error_messages={
        'does_not_exist': 'Foo error field={value} does not exist.',
    }
)
Run Code Online (Sandbox Code Playgroud)

请注意我如何仅使用 DRF 插入到字符串中的值之一 - value,而我没有使用slug_name. 这工作正常。