У меня есть модель 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
. Есть ли более широкая причина для использования этих классов валидаторов, которые мне не хватает?