python - 为什么要使用 UniqueTogetherValidator 而不是 Django 的默认验证行为?
问题描述
我定义了一个 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
约束的错误消息。是否有更广泛的理由使用我缺少的这些验证器类?
解决方案
推荐阅读
- python-3.x - 如何在 python 3 中对大量文本进行分类?
- php - PHP:允许的内存大小......字节用尽
- function - 如何在Vue循环中调用js函数并将参数从Vue传递给js
- java - 从表中获取仅同名人员的记录
- mysql - 尝试使用 sqlobject 和 python 3 添加数据和查询 mysql 数据库
- javascript - CSS 将 SVG 排列到偏移网格中
- linux-kernel - 用户态程序是否可以在 linux sysfs 文件系统中创建节点?
- python-3.x - 检查输入时出错:预期 input_32 有 3 个维度,但得到了形状为 (1000, 12) 的数组
- regex - 非 IP 地址行的正则表达式匹配
- python-3.7 - 如何在 python 中将传入的 HTTP 请求的 FULL URI 作为字符串获取?