django-rest-framework验证器接受带引号的字符串整数作为整数字段的有效数据。有没有一种方法可以强制数据类型,以使字符串引用的整数不被接受?
答案 0 :(得分:1)
Serializer将原始数据保存在class Test(Serializer):
true_int = IntegerField()
def validate_true_int(self, value):
value = self.initial_data.get('true_int')
if isinstance(value, int):
return value
raise ValidationError("Not an int")
data = {'true_int': '10'}
t = Test(data=data)
t.is_valid() # false
data = {'true_int': 10}
t = Test(data=data)
t.is_valid() # true
中,自定义验证方法可以从中检索原始数据。所以下面的作品
document.getElementById(“demo”).innerHTML = Math.ceil((Math.random()*10)-1);
答案 1 :(得分:0)
您可以向该字段添加自定义验证器。
Custom Validator
您可以创建一个自定义序列化器字段,该字段在转换为整数之前会出错。
class TrueIntegerField(serializers.IntegerField):
def to_internal_value(self, data):
if isinstance(data, six.text_type):
raise serializers.ValidationError("Value should be an integer")
return super().to_internal_value(data)
答案 2 :(得分:0)
您可以编写字段验证
def validate_field_name(self):
validating_data = self.context.get('request').data.get('field_name')
if isinstance(validating_data, int):
return validating_data
raise ValidationError('Integer value required')