我尝试强制用户在某个
中仅使用字母数字字符字段所以我在用户模型中编写了以下代码:
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="@@")
我不希望它创造类似的东西......
我做错了什么?我写了一个错误的正则表达式验证器吗?答案 0 :(得分:1)
我认为您的代码应如下所示:
username = models.CharField(unique=True, max_length=20,
validators=[
RegexValidator(
r'^[0-9a-zA-Z]*$',
message='Only alphanumericcharacters are allowed.',
code='invalid_username'
)
]
)
答案 1 :(得分:1)
在调用模型的full_clean()
方法或使用ModelForm的is_valid()
时执行验证。在shell或视图中创建新模型实例不会引发ValidationError。 More
答案 2 :(得分:0)
user = CharField(
max_length=30,
required=True,
validators=[
RegexValidator(
regex='^[a-zA-Z0-9]*$',
message='Username must be Alphanumeric',
code='invalid_username'
),
]
)