0

我一直在尝试扩展默认设置UserCreationForm以包括电子邮件、名字和姓氏。这似乎是关于 SO 的一个很常见的话题,但是我得到的逻辑错误我仍然没有找到解决方案。

这是我的代码:

表格.py

class RegistrationForm(UserCreationForm):
    first_name = forms.CharField(required=True, label="First name:", max_length=100)
    last_name = forms.CharField(required=True, label="Last name:", max_length=100)
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email', 'username', 'password1', 'password2')

    def save(self, commit=True):
        user = super(RegistrationForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        if commit:
            user.save()
        return user

视图.py

def register_user(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/reg_interests/')
    args = {}
    args['form'] = RegistrationForm()
    return render(request, 'login/registration.html', args)

视图和表单在技术上是有效的,因为我没有看到错误消息,但是user.save()名字和姓氏不会保存到数据库中(但电子邮件是)。

我知道每个email,first_namelast_name是默认 Django User 对象中存在的字段,因此不存在的字段不是问题。

为什么扩展email会保存到数据库但first_name不会last_name

注意:我使用的是新发布的 Django 1.10,所以我不知道这是否与它有关。

4

0 回答 0