django-rest-framework验证程序中用于整数字段的授权整数类型

时间:2019-02-13 18:16:37

标签: python django django-rest-framework

django-rest-framework验证器接受带引号的字符串整数作为整数字段的有效数据。有没有一种方法可以强制数据类型,以使字符串引用的整数不被接受?

3 个答案:

答案 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')