:)你好!
我目前正面临一个问题,我无法通过搜索文档或其他问题来解决,如果有人能帮助我,我将非常感激。
问题相对简单:我正在为发布新对象时出现的验证错误添加自定义消息,但我只想在一个地方这样做:模型内部或序列化器内部。
为了这个例子和我的用例,我只讨论unique
和max_length
验证。
-
在模型字段中定义
error_messages=errors_dict
目前只更改unique
验证错误消息,显示max_length
的默认值。 -
当我在序列化器中设置它时,情况正好相反,在Meta中使用extra_kwargs。它只改变
max_length
验证错误消息。
有人知道我在这里错过了什么吗?是否可以将error_messages
只设置在一个地方?
谢谢!
如果有帮助,这里有一些代码片段:
下面示例中的errors
是同一个字典,包含两个键(unique
和max_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"
)
]
}
}