【问题标题】:Change the username ModelForm field to only accept letters and numbers?将用户名 ModelForm 字段更改为仅接受字母和数字?
【发布时间】:2016-07-21 13:27:13
【问题描述】:

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

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

如何更改用户名字段?

【问题讨论】:

    标签: django


    【解决方案1】:

    是的,你可以。不过,您可能需要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]
    

    【讨论】:

    • 太棒了!我需要更改用户名字段,因此对国际字符的支持没有问题。谢谢!
    【解决方案2】:

    您可以为名字字段定义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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      • 2014-06-26
      • 2017-10-22
      相关资源
      最近更新 更多