只接受IntegerField中的11位数字(不少于11位,不超过11​​位)

时间:2014-03-24 12:27:37

标签: python regex django django-models django-validation

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

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

这是我的模范字段:

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

我怎样才能这样做,如果值超过11位,我会收到验证错误?

2 个答案:

答案 0 :(得分:4)

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

r'^\d{11}$'

答案 1 :(得分:1)

考虑使用min_length kwarg - 它的工作原理与你想象的完全相同:

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')])