Django如何在表单中的错误消息中更改自定义用户模型的名称

问题描述

我在 Django 中使用 UserRegistrationForm 创建了一个名为 UserCreationForm注册表单,并有一个自定义用户模型名称 Customusermodel

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

Forms.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','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

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

Illustration of form

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

解决方法

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

假设您为“员工”构建了这个自定义用户, 消息应该看起来像 - “使用这个用户名的员工已经存在。” 而不是“具有此用户名的自定义用户模型已经存在。”

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

另请参阅相关票证 #8913