我正在关注创建以下注册表单的教程:
from django.contrib.auth.forms import UserCreationForm
class RegistrationForm(UserCreationForm):
email = forms.EmailField(required = True)
class Meta:
model = User
fields = (
'username',
'first_name',
'last_name',
'email',
'password1',
'password2'
)
def save(self, commit = True):
user = super(RegistrationForm, self).save(commit= False)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']
if commit:
user.save()
return User
为什么email = forms.EmailField(required = True)
是class Meta
之外提到的唯一字段,其目的是什么?
答案 0 :(得分:0)
contrib.auth.AbstractUser
上的 email
字段(由User
分类)具有:
email = models.EmailField(_('email address'), blank=True)
表示允许blank。
因为我们希望在表单中需要它(为了我假设的教程的目的),我们必须明确声明它。
答案 1 :(得分:0)
因为默认的UserCreationForm
没有代表电子邮件的EmailField
。但是它具有其他字段,因此无需添加它们。
如果您添加了UserCreationForm
之类的不包含在EmailField
中的特殊字段,则必须在其中添加它。