您已经准备就绪,您已经成功构建了一个自定义表单,该表单将替换默认表单。但是,您尝试使用模型窗体上的save()方法进行自定义处理。这在旧版本的django- registration中是可能的,但是从您在URL conf中指定后端使用v0.8的事实可以看出。
该升级指南说:
以前,在注册期间用于收集数据的表单应该实现一个save()方法,该方法将创建新的用户帐户。这已不再是这种情况; 创建帐户由后端处理,因此任何自定义逻辑都应移至自定义后端,或将侦听器连接到注册过程中发送的信号。
换句话说,既然您使用的是0.8版,则窗体上的save()方法将被忽略。您需要使用自定义后端或信号进行自定义处理。我选择创建一个自定义的后端(如果有人使用信号处理此功能,请发布代码- 我无法使其正常工作)。您应该能够对其进行修改以保存到您的自定义配置文件。
因此,URL conf为:
url(r'^accounts/register/$',
register,
{'backend': 'accounts.regbackend.RegBackend','form_class':MM_RegistrationForm},
name='registration_register'
),
regbackend.py具有必要的导入,基本上是DefaultBackend的一个副本,仅带有register()方法,并添加了:
u = User.objects.get(username=new_user.username)
u.first_name = kwargs['first_name']
u.last_name = kwargs['last_name']
u.save()