有没有办法在django rest框架中覆盖或阻止验证错误。例如,我有以下代码
class Function(models.Model):
name = models.CharField(max_length=30, unique=True)
我需要某种方法来阻止名称的唯一= True。如何在序列化器中处理它?</ p>
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',)
答案 0 :(得分:0)
unique
在数据库级别强制执行。
https://docs.djangoproject.com/en/1.7/ref/models/fields/#unique
..所以这是不可能的。您需要从模型字段中删除unique并检查代码中的唯一性。
答案 1 :(得分:0)
最快的方法是将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