在 django-rest-framework 验证器中为整数字段强制指定整数类型

Sha*_*s M 5 python django django-rest-framework

django-rest-framework 验证器接受字符串引用的整数作为整数字段的有效数据。有没有办法强制规定数据类型,以便不接受字符串引用的整数?

Sha*_*s M 6

序列化器将原始数据保存在self.initial_data自定义验证方法可以检索的位置。所以下面的作品

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
Run Code Online (Sandbox Code Playgroud)