覆盖或阻止 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
有没有办法覆盖或阻止 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