Reputation: 865
I am trying to get it so that the validator tells you "username must be alphanumeric". This is my code so far. I have confirmed that it validates at the correct time. The only problem is that no matter what I try, The RegexValidator still chucks the default error ("enter a valid value").
This is my code. I also tried it without the 'message=' in front, and it still said "enter a valid value", instead of "username must be alphanumeric"
user = CharField(
max_length=30,required=True,
validators=[
RegexValidator('^[a-zA-Z0-9]*$',
message='Username must be Alphanumeric'
),
]
)
Upvotes: 25
Views: 33749
Reputation: 530
I was having trouble running a RegexValidator, too. But I was trying to raise the error by saving the model instance. It will not work this way! Only when using ModelForms the validators are called automatically.
In https://docs.djangoproject.com/en/dev/ref/validators/#how-validators-are-run
Note that validators will not be run automatically when you save a model, but if you are using a ModelForm, it will run your validators on any fields that are included in your form."
Upvotes: 8
Reputation: 8623
How about adding the error code:
user = CharField(
max_length=30,
required=True,
validators=[
RegexValidator(
regex='^[a-zA-Z0-9]*$',
message='Username must be Alphanumeric',
code='invalid_username'
),
]
)
Upvotes: 44
Reputation: 5736
Try passing the messsage
as,
user = CharField(
max_length=30,
required=True,
validators=[
RegexValidator(
regex=r'^[a-zA-Z0-9]*$',
message=_('Username must be Alphanumeric'),
),
]
)
Upvotes: 0
Reputation: 1096
a validate user name here should contain at least one minuscule letter, one capital letter and one numeric, if i understand your code.
to complete Virendra Rajput answer correct the regex with that:
regex=r'^[a-zA-Z0-9]*$' start with the r'
Upvotes: 0