我有一个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')
我还有一个Django REST Framework序列化程序,其中带有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
约束的错误消息来说,这似乎有些重复。利用我缺少的这些验证器类是否有更广泛的原因?