只接受11位数字的IntegerField(不少于11,不多于11)
我有一个整数字段,我希望这个字段只能接受11位数字的输入。
我尝试在这个字段上使用正则表达式来验证输入,但我遇到的问题是,当我用这个字段创建一个模型表单时,只有当输入的值是10位或更少时才会出现验证错误。如果我输入12位或更多的数字,就不会出现任何验证错误。
这是我的模型字段:
number = models.IntegerField(max_length=11, validators=[RegexValidator(r'\d{11,11}','Number must be 11 digits','Invalid number')])
我该如何设置才能在输入超过11位数字时也出现验证错误呢?
2 个回答
1
可以考虑使用 min_length
这个参数——它的功能和你想象的一样。
class YourModel(models.Model):
number = models.IntegerField(max_length=11, min_length=11,
validators=[RegexValidator(r'\d{11,11}',
'Number must be 11 digits', 'Invalid number')])
5
我不太确定 Django 的语法,但你需要使用锚点:
r'^\d{11}$'