注册表格继承自UserCreationForm形式的django

时间:2017-08-11 14:16:09

标签: django django-forms

我正在关注创建以下注册表单的教程:

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之外提到的唯一字段,其目的是什么?

2 个答案:

答案 0 :(得分:0)

contrib.auth.AbstractUser上的

email字段(由User分类)具有:

email = models.EmailField(_('email address'), blank=True)

表示允许blank

因为我们希望在表单中需要它(为了我假设的教程的目的),我们必须明确声明它。

答案 1 :(得分:0)

因为默认的UserCreationForm没有代表电子邮件的EmailField。但是它具有其他字段,因此无需添加它们。

如果您添加了UserCreationForm之类的不包含在EmailField中的特殊字段,则必须在其中添加它。