【发布时间】:2021-02-01 15:27:50
【问题描述】:
对于一个 Django 项目,我有一个自定义的用户模型:
class User(AbstractUser):
username = None
email = models.EmailField(_('e-mail address'),
unique=True)
first_name = models.CharField(_('first name'),
max_length=150,
blank=False)
last_name = models.CharField(_('last name'),
max_length=150,
blank=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name']
objects = UserManager()
def __str__(self):
return self.email
我正在创建一个新的用户注册表:
class UserRegistrationForm(forms.ModelForm):
auto_password = forms.BooleanField(label=_('Generate password and send by mail'),
required=False,
initial=True)
password = forms.CharField(label=_('Password'),
widget=forms.PasswordInput)
password2 = forms.CharField(label=_('Repeat password'),
widget=forms.PasswordInput)
class Meta:
model = User
fields = ('email', 'first_name', 'last_name', 'is_staff',
'is_superuser')
def clean_password2(self):
cd = self.cleaned_data
if cd['password'] != cd['password2']:
raise forms.ValidationError(_("Passwords don't match."))
return cd['password2']
我的表单有一个 auto_password 布尔字段。设置此复选框时,不得选中 password 和 password2 字段,因为它们的内容(或缺少内容)并不重要。相反,当auto_password复选框未设置时,password和password2必须被选中。
有没有办法在需要时选择性地禁用 Django 表单检查?
感谢您的帮助。
【问题讨论】:
标签: python django forms validation model