覆盖或阻止 django rest 中的验证错误 api

Overriding or blocking validation errors in django rest api

有没有办法覆盖或阻止 django rest 框架中的验证错误。例如,如果我有以下代码

class Function(models.Model):



name = models.CharField(max_length=30, unique=True)

我需要某种方法来阻止名称的 unique=True。如何在序列化器中处理它?

class FunctionSerializerWithOnlyName(serializers.ModelSerializer):

def validate_name(self, value):
        # it is always returning name needs to be unique even if i raise another error
        return value


class Meta:
    model = Function
    fields = ( 'name',)

unique 在数据库级别强制执行。 https://docs.djangoproject.com/en/1.7/ref/models/fields/#unique

..所以这是不可能的。您需要从模型字段中删除唯一性并检查代码中的唯一性。

最快的方法是将 FunctionSerializerWithOnlyName 更改为 serializers.Serializer 并取消它与 Function 对象的链接。

class FunctionSerializerWithOnlyName(serializers.Serializer):

name = serializers.CharField(max_length=30)

def validate_name(self, value):
    try:
        function = Function.objects.get(name=value)
    except:
        raise serializers.ValidationError("The function name '"+value+"' is not available")
    return value