Django Rest框架-自定义错误消息-序列化器与模型



:)你好!

我目前正面临一个问题,我无法通过搜索文档或其他问题来解决,如果有人能帮助我,我将非常感激。

问题相对简单:我正在为发布新对象时出现的验证错误添加自定义消息,但我只想在一个地方这样做:模型内部或序列化器内部。

为了这个例子和我的用例,我只讨论uniquemax_length验证。

  • 在模型字段中定义error_messages=errors_dict目前只更改unique验证错误消息,显示max_length的默认值。

  • 当我在序列化器中设置它时,情况正好相反,在Meta中使用extra_kwargs。它只改变max_length验证错误消息。

有人知道我在这里错过了什么吗?是否可以将error_messages只设置在一个地方?

谢谢!


如果有帮助,这里有一些代码片段:

下面示例中的errors是同一个字典,包含两个键(uniquemax_length)。

  • 内部模型,仅用于唯一验证:
class User(AbstractUser, SplintModel):
(...)
cpf = models.CharField('CPF', blank=False, max_length=11, unique=True, error_messages=errors)
  • 内部序列化器,仅用于max_length验证:
class UserSerializer(serializers.ModelSerializer):
(...)
class Meta:
model = User
(...)
extra_kwargs = {
"cpf": {"error_messages": errors}
}

serializers.py中试试这个:

from rest_framework.validators import UniqueValidator
extra_kwargs = {
'cpf': { 
{
'error_messages' : {"max_length": "your error"},
'validators': [
UniqueValidator(
queryset=User.objects.all(),
message="write your error message here"
)
]
}
}

相关内容

  • 没有找到相关文章

最新更新