只接受11位数字的IntegerField(不少于11,不多于11)

1 投票
2 回答
2285 浏览
提问于 2025-04-17 23:39

我有一个整数字段,我希望这个字段只能接受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}$'

撰写回答