Зачем использовать UniqueTogetherValidator вместо стандартного поведения проверки Django? - PullRequest
1 голос
/ 23 октября 2019

У меня есть модель Django, определенная с отношением unique_together, определенным между name и address, показанным ниже:

class Person(models.Model):
    name = models.CharField(max_length=255, default='', null=False)
    address = models.CharField(max_length=255, default='', null=False)

    class Meta:
        unique_together = ('name', 'address')

У меня также есть сериализатор REST Framework Django с UniqueTogetherValidatorописание того же ограничения, как определено в модели, показанной ниже:

class PersonSerializer(serializers.ModelSerializer):

    class Meta:
        model = Person
        fields = (
            'name', 'address',
        )
        validators = [
            UniqueTogetherValidator(
                queryset=Branch.objects.all(),
                fields=['name', 'address']
            )
        ]

Во время тестирования этого ограничения я заметил, что демонстрируется точно такое же поведение, независимо от того, добавлен ли UniqueTogetherValidator к PersonSerializer или нет. То же сообщение об ошибке возвращается независимо от того, включаю я это или нет (из-за unique_together, определенного в модели).

Мой вопрос: в чем причина явного объявления валидаторов на сериализаторе, если поведениеза кулисами? Я заметил, что вы можете изменить сообщение об ошибке, но это похоже на шаблон для единственной манипуляции с сообщением об ошибке за нарушение ограничения unique_together. Есть ли более широкая причина для использования этих классов валидаторов, которые мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...