django - Django如何在表单的错误消息中更改自定义用户模型的名称
问题描述
我在 django中创建了一个名为UserRegistrationForm
using的注册表单,并有一个自定义用户模型名称。UserCreationForm
CustomUserModel
当我使用错误的凭据注册时,错误消息显示“具有此用户名的自定义用户模型已存在。”。我希望它类似于“用户名已经存在”。我怎样才能做到这一点?
表格.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
这是一张图片,可以帮助您理解我的问题。
错误指出“具有此用户名的自定义用户模型已存在。” 我想更改此消息
解决方案
是的,您可以更改此错误消息。
假设您为“员工”构建了此自定义用户,消息应类似于“具有此用户名的员工已存在”。而不是“具有此用户名的自定义用户模型已经存在。”
class YourForm(forms.ModelForm):
class Meta:
model = YourCustomUserModel
error_messages = {
"your_unique_field":{
"unique":"Employee with this username already exists."
},
}
另请参阅相关票证#8913。
推荐阅读
- c++ - C ++:将空对象分配给现有对象
- npm - Bamboo 构建失败,因为 webpack 没有找到 node_modules
- android - 当应用程序在 kotlin/android 中被杀死时,删除集合中特定文档(即当前用户文档)的所有子集合
- angular - 传递多个查询参数不起作用Angular 7
- c++ - 使用 cpp 将日志发送到 syslog 服务器
- graphql - GraphQL not null 可空对象的字段返回错误
- r - 将均值和 sd 的数据帧组合成一个数据帧,其中 sd 在均值后的括号中
- python - Python if-else 代码样式,用于减少舍入浮点数的代码
- c# - 将使用哪种扩展方法?
- java - 选择 RecyclerView 的列表项后启用按钮