为什么要对Django的默认验证行为使用UniqueTogetherValidator?

时间:2019-10-23 19:15:34

标签: python django django-rest-framework

我有一个Django模型,定义了一个unique_togethername之间的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约束的错误消息来说,这似乎有些重复。利用我缺少的这些验证器类是否有更广泛的原因?

0 个答案:

没有答案