1

我有一个 IntegerField,我希望输入只接受 11 位数字/数字的值。

我试图在该字段上制作一个正则表达式验证器,但我的问题是当我尝试使用该字段制作一个模型表单时。如果值是 10 位或更少,我只会收到验证错误,但如果我尝试 12 位及以上的值,我不会收到任何验证错误。

这是我的模型字段:

number =  models.IntegerField(max_length=11, validators=[RegexValidator(r'\d{11,11}','Number must be 11 digits','Invalid number')])

如果值超过 11 位,我该如何做到这一点,所以我会收到验证错误?

4

2 回答 2

5

不确定 django 语法,但您必须使用锚点:

r'^\d{11}$'
于 2014-03-24T12:30:08.070 回答
1

考虑使用min_lengthkwarg——它的工作原理和你想象的完全一样:

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')])
于 2014-03-24T18:15:04.743 回答