无法向django-registration添加自定义字段

时间:2010-05-29 11:45:43

标签: python django django-forms 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 :(得分:3)

我们最近实施了这样一个表格。这就是我们所做的:

  • 创建一个新的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
    

答案 1 :(得分:0)

我不确定,为什么它不起作用,但我很确定你需要编辑django-registration的views.py ...你可以通过您的新CustomRegistrationFormUniqueEmail作为urls.py中的参数。

答案 2 :(得分:0)