首页 > 解决方案 > Django如何在表单的错误消息中更改自定义用户模型的名称

问题描述

我在 django中创建了一个名为UserRegistrationFormusing的注册表单,并有一个自定义用户模型名称。UserCreationFormCustomUserModel

当我使用错误的凭据注册时,错误消息显示“具有此用户名的自定义用户模型已存在。”。我希望它类似于“用户名已经存在”。我怎样才能做到这一点?

表格.py

class UserRegistrationForm(UserCreationForm):
    user_name = forms.CharField(max_length=150)
    email = forms.EmailField()
    first_name = forms.CharField(max_length=120)
    last_name = forms.CharField(max_length=120, required=False)
    date_of_birth = forms.DateField(
        widget=forms.DateInput(
            format='%d/%m/%Y',
            attrs={'type': 'date', 'min': '1900-01-01', 'max': str(timezone.now().year)+'-'+str(timezone.now().month)+'-'+str(timezone.now().day)},
        )
    )
    gender = forms.ChoiceField(
        widget=forms.Select, 
        choices=(('M', 'Male'), ('F', 'Female'), ('T', 'Transgender'), ('N', 'NonBinary')), 
        initial='N',
    )

    def is_valid(self):
        form = super(UserRegistrationForm, self).is_valid()
        print("*******************************")
        print(self.errors)
        print("*******************************")
        return form

自定义用户模型

class CustomUserModel(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('email address'), unique=True)
    user_name = models.CharField(max_length=150, unique=True)
    first_name = models.CharField(max_length=120)
    last_name = models.CharField(max_length=120, blank=True)
    date_of_birth = models.DateField(max_length=8)
    date_created = models.DateTimeField(default=timezone.now) 
    gender = models.CharField(max_length=1, default='N', choices=(('M', 'Male'), ('F', 'Female'), ('T', 'Transgender'), ('N', 'NonBinary')))
    is_staff = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)

    objects = CustomAccountsManager()

    USERNAME_FIELD = 'user_name'
    REQUIRED_FIELDS = ['email', 'first_name', 'date_of_birth']

    def __str__(self):
        return self.user_name

这是一张图片,可以帮助您理解我的问题。

表格说明

错误指出“具有此用户名的自定义用户模型已存在。” 我想更改此消息

标签: djangodjango-formsdjango-errors

解决方案


是的,您可以更改此错误消息。

假设您为“员工”构建了此自定义用户,消息应类似于“具有此用户名的员工已存在”。而不是“具有此用户名的自定义用户模型已经存在。”

class YourForm(forms.ModelForm):
    class Meta:
            model = YourCustomUserModel
            error_messages = {
                            "your_unique_field":{
                                            "unique":"Employee with this username already exists."
                                                 },
                             }

另请参阅相关票证#8913


推荐阅读