我有一个IntegerField,我希望输入只接受11位/数字的值。
我试图在该字段上创建一个正则表达式验证器,但我的问题是当我尝试使用该字段制作模型表单时。如果值为10位或更小,我只会得到验证错误,但如果我尝试12位及以上的值,我不会得到任何验证错误。
这是我的模范字段:
number = models.IntegerField(max_length=11, validators=[RegexValidator(r'\d{11,11}','Number must be 11 digits','Invalid number')])
我怎样才能这样做,如果值超过11位,我会收到验证错误?
答案 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')])