Django-Rest-Framework не может переопределить уникальный сериализатор error_messages
У меня следующая модель:
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']
И следующий сериализатор для модели:
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.')
}
}
}
Когда я пытаюсь создать экземпляр PersonDiscount с существующим пользователем из api, я не получаю пользовательское сообщение об ошибке, которое я установил как в модели, так и в сериализаторе.
{
"user": [
"This field must be unique."
]
}
Я уже искал в документации и не могу найти другого способа понять, почему переопределение error_messages не применяется. Я также перезапускал django runserver уже несколько раз
Надеюсь, кто-нибудь сможет помочь мне с этой проблемой
Вы можете проверить уникальность вручную, как показано ниже:
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__'