2015-06-01 35 views
0

我試圖迫使用戶在一定Django的字母數字驗證器無法正常工作

場只使用字母數字字符,所以我寫了下面的代碼在用戶模式:

alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', message='Only alphanumeric characters are allowed.') 

username = models.CharField(unique=True, max_length=20, validators=[alphanumeric]) 

,但我仍然可以創造:

User.objects.create(username="@@") 

我不希望它創建類似的東西...

是我做錯了什麼?我寫了一個錯誤的正則表達式驗證器?

回答

1

我覺得你的代碼應該是這樣的:

username = models.CharField(unique=True, max_length=20, 
    validators=[ 
     RegexValidator(
      r'^[0-9a-zA-Z]*$', 
      message='Only alphanumericcharacters are allowed.', 
      code='invalid_username' 
     ) 
    ] 
) 
+0

它沒有工作.. – brad

+0

@brad更新了答案。看起來你也需要傳遞'code'選項。 – xyres

+0

仍然無法正常工作.. – brad

0

或進行驗證,當你調用模型的方法full_clean()當您使用的ModelForm的is_valid()。在shell或view中創建新的模型實例不會引發ValidationError。 More