Django Rest Framework嵌套序列化验证器

时间:2017-05-24 21:27:35

标签: django-rest-framework

有没有办法在嵌套序列化中绕过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

0 个答案:

没有答案