覆盖AbstractUser模型的默认Django用户名验证器

哈森皮

我正在使用AbstractUser模型来创建自定义身份验证模型。

问题是我无法覆盖用户名字段的默认表单字段验证器,这是到目前为止我尝试过的操作:

class RegularUserForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
    super(RegularUserForm, self).__init__(*args, **kwargs)
    self.fields['username'].help_text = None
    self.fields['username'].default_validators = []
    self.fields['username'].validators = []

不确定如何执行此操作,覆盖help_text成功,我也尝试使用[None]代替,[]self.fields['username'].validators = [validate_username]validate_username是我创建的自定义验证器。


例如,这是表单代码:

class RegularUserForm(forms.ModelForm):
    username = forms.CharField(max_length=30, validators=[validate_username])
    email1 = forms.EmailField(required=True, label='')

class Meta:
    model = RegularUser
    fields = ['username', 'password', 'email', 'email1', 'gender', ]
    widgets = {'password': forms.PasswordInput(attrs={'placeholder': 'enter password'}),
               'email': forms.EmailInput(attrs={'placeholder': 'enter email'})
               }

def clean(self):
    cleaned_data = super(RegularUserForm, self).clean()
    email = self.cleaned_data.get('email')
    email1 = self.cleaned_data.get('email1')

    if email != email1:
        self.add_error("email1", 'emails do not match')
    return cleaned_data

任何帮助表示赞赏!

哈森皮

幸运的是,我找到了解决方案,我覆盖了表单中的验证器,但没有覆盖模型中的验证器(也做了相反的事情),所以我必须这样做:

from utils import validate_username
class RegularUserForm(forms.ModelForm):
    username = forms.CharField(max_length=50, validators=[validate_username])

class RegularUser(AbstractUser):
    def __init__(self, *args, **kwargs):
        super(RegularUser, self).__init__(*args, **kwargs)
        self._meta.get_field('username').validators = [validate_username]

读者注意事项:确保同时覆盖模型验证者和表单验证者!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过创建自定义模型来覆盖Django中用户名的最大长度

来自分类Dev

Django用户名字段可为空可打破默认身份验证后端

来自分类Dev

Django-将登录用户的用户名作为其他模型的默认值

来自分类Dev

从其他模型访问用户名

来自分类Dev

jQuery验证检查用户名与远程

来自分类Dev

Swift:验证用户名输入

来自分类Dev

从MySQL验证用户名和密码

来自分类Dev

删除用户名验证createuserwizard

来自分类Dev

Javascript验证用户名长度

来自分类Dev

通过Ajax验证用户名/密码

来自分类Dev

用户名长度验证jQuery

来自分类Dev

如何注入的用户名(未验证)?

来自分类Dev

laravel中的用户名验证

来自分类Dev

验证用户名和密码

来自分类Dev

验证用户名和密码

来自分类Dev

从authlogic删除用户名验证

来自分类Dev

Ajax验证用户名和密码

来自分类Dev

删除用户名验证createuserwizard

来自分类Dev

通过Ajax验证用户名/密码

来自分类Dev

Swift:验证用户名输入

来自分类Dev

跨脚本用户名验证

来自分类Dev

CodeIgniter错误验证用户名

来自分类Dev

如何显示用户名从用户模型到报价控制器的索引视图?

来自分类Dev

自定义Django用户模型-用户名作为主键属性

来自分类Dev

如何在Django的模型字段中添加已登录用户的用户名

来自分类Dev

Django获取登录用户的用户名并将其传递给模型

来自分类Dev

Django:覆盖默认用户模型的错误消息

来自分类Dev

如何在自定义UserChangeForm中覆盖用户名的django'unique'错误消息

来自分类Dev

如何在自定义UserChangeForm中覆盖用户名的django'unique'错误消息