我一直在尝试扩展默认UserCreationForm
以包含电子邮件,名字和姓氏。这似乎是关于SO 的一个非常常见的主题但是我得到的逻辑错误我仍然没有找到解决方案。
这是我的代码:
forms.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
views.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_name
和last_name
中的每一个都是默认Django用户对象中存在的字段,因此不存在的字段不存在问题。
扩展后的email
如何保存到数据库,但first_name
和last_name
不会?
注意:我正在使用新发布的Django 1.10,所以我不知道是否与它有任何关系。