[英]Django-Rest-Framework can't override serializer unique error_messages
我有以下 model:
class PersonDiscount(models.Model):
user = models.OneToOneField('backend.Customer', related_name='discount', on_delete=models.CASCADE, error_messages={
'unique': _('A discount setting is already set up for this customer.')})
discount = models.IntegerField(default=0)
discount_auto = models.IntegerField(default=0)
auto = models.BooleanField(default=True)
class Meta:
ordering = ['-id']
以及 model 的以下串行器:
class PersonDiscountPostSerializer(serializers.ModelSerializer):
class Meta:
model = PersonDiscount
fields = '__all__'
extra_kwargs = {
'user': {
'error_messages': {
'unique': _('A discount setting is already set up for this customer.')
}
}
}
当我尝试使用来自 api 的现有用户创建 PersonDiscount 实例时,我没有收到我在 model 和序列化程序中设置的自定义错误消息。
{
"user": [
"This field must be unique."
]
}
我已经在文档中查找过,找不到任何其他方法来理解为什么没有应用覆盖 error_messages。 我还多次重启了 django 运行服务器
希望有人可以帮助我解决这个问题
您可以手动验证唯一性,如下所示:
class PersonDiscountPostSerializer(serializers.ModelSerializer):
user = serializers.PrimaryKeyRelatedField(
required=True,
queryset=Customer.objects.all(),
)
def validate_user(self, value):
exists = PersonDiscount.objects.filter(user=value).exists()
if exists:
raise serializers.ValidationError("err msg")
return value
class Meta:
model = PersonDiscount
fields = '__all__'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.