问题描述
我在 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
这是一张图片,可以帮助您了解我的问题。
错误指出“具有此用户名的自定义用户模型已经存在。”我想更改此消息
解决方法
是的,您可以更改此错误消息。
假设您为“员工”构建了这个自定义用户, 消息应该看起来像 - “使用这个用户名的员工已经存在。” 而不是“具有此用户名的自定义用户模型已经存在。”
class YourForm(forms.ModelForm):
class Meta:
model = YourCustomUserModel
error_messages = {
"your_unique_field":{
"unique":"Employee with this username already exists."
},}
另请参阅相关票证 #8913。