无法为django-registration添加自定义字段
我扩展了 RegistrationFormUniqueEmail
这个类。
class CustomRegistrationFormUniqueEmail(RegistrationFormUniqueEmail):
first_name = forms.CharField(label=_('First name'), max_length=30,required=True)
last_name = forms.CharField(label=_('Last name'), max_length=30, required=True)
def save(self, profile_callback=None):
new_user = super(CustomRegistrationFormUniqueEmail, self).save(profile_callback=profile_callback)
new_user.first_name = self.cleaned_data['first_name']
new_user.last_name = self.cleaned_data['last_name']
return new_user
然后我修改了视图。
# form = form_class(data=request.POST, files=request.FILES)
form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES)
但是,我还是看到默认的表单,只包含四个字段。
3 个回答
0
你可以看看这里 使用信号扩展django-registration 和这里 http://dmitko.ru/?p=546
0
我不太确定为什么它不工作,但我很确定你不需要去修改django-registration的views.py
文件……你可以在urls.py
里把你新的CustomRegistrationFormUniqueEmail
作为一个参数传进去。
3
我们最近实现了一个这样的表单。以下是我们所做的步骤:
创建一个新的
backend
(可以先从默认的后端复制一份来开始)registration/ backends/ default/ custom/ # <- your new backend
...
在新的
urls.py
文件中,调整后端的参数... { 'backend': 'registration.backends.custom.DefaultBackend' }, ...
在
custom
文件夹下创建一个forms.py
文件。根据你的需求调整这个表单(字段和验证规则)在
registration/urls.py
中指向正确的后端:# from registration.backends.default.urls import * from registration.backends.custom.urls import *
这样应该就可以正常工作了。特别是因为:
你的
custom/__init__.py
文件里会有一个DefaultBackend
类,并且这个类里有一个get_form_class
方法:def get_form_class(self, request): """ Return the default form class used for user registration. """ return RegistrationForm
而且你在这个文件中也导入了自己的
RegistrationForm
:from registration.backends.custom.forms import RegistrationForm