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__'
    
Вернуться на верх