如何使 Django 表单字段唯一?
How to make Django form Field Unique?
我有一个注册表单,我想让电子邮件和手机号码字段的数据是唯一的....
class SignUpForm(UserCreationForm):
email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.', unique=True)
mobile_no = forms.CharField(validators=[max_length=17, initial='+91', unique=True)
我目前正在使用 unique=True
但它会引发错误...
TypeError: __init__() got an unexpected keyword argument 'unique'
最简单快捷的方法(对您和服务器而言)是通过设置 unique=True
.
在您的模型中实现它
无论如何,如果你想要它的形式,你需要覆盖 clean
正在清理电子邮件:
class SignUpForm(UserCreationForm):
...
def clean_email(self):
email = self.cleaned_data['email']
if User.objects.filter(email=email).exists():
raise ValidationError("Email already exists")
return email
现在 form.is_valid()
如果具有给定电子邮件的用户帐户已经存在,将抛出错误。
我想你现在可以弄清楚如何对手机号码做同样的事情了。
我有一个注册表单,我想让电子邮件和手机号码字段的数据是唯一的....
class SignUpForm(UserCreationForm):
email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.', unique=True)
mobile_no = forms.CharField(validators=[max_length=17, initial='+91', unique=True)
我目前正在使用 unique=True
但它会引发错误...
TypeError: __init__() got an unexpected keyword argument 'unique'
最简单快捷的方法(对您和服务器而言)是通过设置 unique=True
.
在您的模型中实现它
无论如何,如果你想要它的形式,你需要覆盖 clean
正在清理电子邮件:
class SignUpForm(UserCreationForm):
...
def clean_email(self):
email = self.cleaned_data['email']
if User.objects.filter(email=email).exists():
raise ValidationError("Email already exists")
return email
现在 form.is_valid()
如果具有给定电子邮件的用户帐户已经存在,将抛出错误。
我想你现在可以弄清楚如何对手机号码做同样的事情了。