有没有办法在嵌套序列化中绕过Django Rest Framework验证器而不覆盖原始序列化器上的验证器?
示例:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username')
class TaskSerializer(serializers.ModelSerializer):
owner = UserSerializer()
class Meta:
model = models.Task
如果我尝试更新或创建任务,我将收到unicity错误,因为DRF会在User模型的用户名字段中使用唯一约束。
我找到的解决方案是覆盖UserSerializer上的验证器:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username')
extra_kwargs = {
'username': {
'validators': []
}
有没有办法绕过此验证而不直接在UserSerializer中覆盖验证器? 通过覆盖这个验证器,我必须重写我在模型上定义的每个约束。
下面的解决方案本来不错,因为只允许在TaskSerializer中绕过验证器而不覆盖初始UserSerializer。
class TaskSerializer(serializers.ModelSerializer):
owner = UserSerializer(validators=[])
class Meta:
model = models.Task