2014-03-24 40 views
1

我有一個IntegerField,我希望輸入只接受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級的數字?

+0

只希望號或字符?/ – Amitesh

+0

只有數字/數字 –

+0

M42提供的用戶正則表達式很適合你 – Amitesh

回答

3

不確定Django的語法,但你必須使用錨:

r'^\d{11}$' 
0

考慮使用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')])