如何在自定义 UserChangeForm 中覆盖用户名的 django“唯一"错误消息 [英] How to override django 'unique' error message for username in custom UserChangeForm

查看:15
本文介绍了如何在自定义 UserChangeForm 中覆盖用户名的 django“唯一"错误消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试覆盖默认的具有该用户名的用户已经存在".在我的自定义 UserChangeForm 表单中输入现有用户名时显示的错误消息.使用的 Django 版本:1.6.1

I'm trying to override the default "A user with that Username already exists." error message displayed when entering an existing username in my custom UserChangeForm form. Django version used: 1.6.1

这是我的代码:

class CustomUserChangeForm(forms.ModelForm):
    username = forms.RegexField(
        label="User name", max_length=30, regex=r"^[w.@+-]+$",
        error_messages={
            'invalid': ("My message for invalid"),
            'unique': ("My message for unique") # <- THIS
        }
    )

    class Meta:
        model = get_user_model()
        fields = ('username', 'first_name', 'last_name', 'email',)

但如果我使用此代码输入现有用户名,我仍然会得到默认的具有该用户名的用户已经存在".信息.请注意,当输入错误的用户名(包含无效字符)时,会显示自定义的我的无效消息".

But if I enter an existing username with this code, I still get the default "A user with that Username already exists." message. Note that the custom "My message for invalid" is displayed when entering a wrong username (with invalid characters).

推荐答案

当前 unique 错误消息无法在表单字段级别自定义,引用自 文档:

Currently unique error message cannot be customized on a form field level, quote from docs:

class CharField(**kwargs)

class CharField(**kwargs)

...

错误信息键:required、max_length、min_length

Error message keys: required, max_length, min_length

...

class RegexField(**kwargs)

class RegexField(**kwargs)

...

错误信息键:必填,无效

Error message keys: required, invalid

所以,总结一下,对于您的 username 字段,只有 requiredinvalidmax_lengthmin_length 错误消息是可自定义的.

So, to summarize, for your username field only required, invalid, max_length, min_length error messages are customizeable.

您只能在模型字段级别设置 unique 错误消息(请参阅 来源).

You can only set unique error message on a model field level (see source).

另见相关.

另请参阅 django.contrib.auth.forms.UserCreationForm 已制作(注意自定义 duplicate_username 错误消息)- 自定义错误消息也可能是您的选择.

Also see how django.contrib.auth.forms.UserCreationForm was made (pay attention to custom duplicate_username error message) - custom error message could be an option for you too.

希望有所帮助.

这篇关于如何在自定义 UserChangeForm 中覆盖用户名的 django“唯一"错误消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆