将用户名ModelForm字段更改为仅接受字母和数字?

时间:2016-07-21 13:27:14

标签: django

我有一个使用Django用户模型的ModelForm。我想将字段更改为仅接受字母和数字。我可以通过使用此方法将字段设置为required来更改某些行为(请参阅代码)。那么我可以用它来更改用户名字段吗?

def __init__(self, *args, **kwargs):
    super(UserForm, self).__init__(*args, **kwargs)
    self.fields['first_name'].required = True

如何更改用户名字段?

2 个答案:

答案 0 :(得分:2)

是的,你可以。您可能需要validator。我没试过这个,但它可能会起作用:

def __init__(self, *args, **kwargs):
    super(UserForm, self).__init__(*args, **kwargs)
    self.fields['first_name'].required = True

    validator = RegexValidator(r'^[a-zA-Z0-9]*$',
                               'You can only enter alphanumerics')
    self.fields['username'].validators = [validator]

答案 1 :(得分:0)

您可以为名字字段

定义clean_field方法
def clean_first_name(self):
    name = self.cleaned_data['first_name']
    if not name.isalnum():
        raise forms.ValidationError('Only alphanumeric')
    return super(UserForm, self).clean_first_name()