无法将自定义字段添加到Django-Registration
-
05-10-2019 - |
题
我延长了 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)
但是,我仍然看到默认表单仅包含四个字段。
解决方案
我们最近实施了这样的形式。这是我们所做的:
创建一个新的
backend
(只需从默认后端复制它)registration/ backends/ default/ custom/ # <- your new backend
...
在新的
urls.py
调整后端参数... { 'backend': 'registration.backends.custom.DefaultBackend' }, ...
创建一个
forms.py
在下面custom
. 。将此表格调整为您的喜好(字段和验证)在里面
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
其他提示
我不确定,不确定它为什么不起作用,但我很确定你会做 不是 需要编辑django-Registration views.py
...您可以通过新的 CustomRegistrationFormUniqueEmail
作为论点 urls.py
.
你可以尝试在这里看 使用信号扩展Django-Registration 和这里 http://dmitko.ru/?p=546
不隶属于 StackOverflow