django字母数字验证器无法正常工作

时间:2015-06-01 08:44:51

标签: 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="@@")

我不希望它创造类似的东西......

我做错了什么?我写了一个错误的正则表达式验证器吗?

3 个答案:

答案 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'
            ),
        ]

)

来源:Django regex validator message has no effect