你已经准备就绪,你已经成功构建了一个自定义表单,该表单将替换默认表单。但是,你尝试使用模型窗体上的save()方法进行自定义处理。这在旧版本的django-registration中是可能的,但是从你在URL conf中指定后端使用v0.8的事实可以看出。
该升级指南说:
以前,在注册期间用于收集数据的表单应该实现一个save()方法,该方法将创建新的用户帐户。这已不再是这种情况; 创建帐户由后端处理,因此任何自定义逻辑都应移至自定义后端,或将侦听器连接到注册过程中发送的信号。
换句话说,既然你使用的是0.8版,则窗体上的save()方法将被忽略。你需要使用自定义后端或信号进行自定义处理。我选择创建一个自定义后端(如果有人使用信号处理此功能,请发布代码-我无法使其正常工作)。你应该能够对其进行修改以保存到你的自定义配置文件。
- 在你的应用中创建一个regbackend.py。
- 将register()方法从DefaultBackend复制到其中。
- 在方法的最后,执行查询以获取相应的User实例。
- 将其他表单字段保存到该实例中。
- 修改URL conf,使其指向自定义表单和自定义后端
因此,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()



