简体   繁体   中英

Not able to add custom fields to django-registration

I extended 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

then changed view

#       form = form_class(data=request.POST, files=request.FILES)
        form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES)

But, still I see default form which contains four fields only.

We recently implemented such a form. Here's what we've done:

  • Create a new backend (just copy it from the default backend to start with)

     registration/ backends/ default/ custom/ # <- your new backend 

    ...

  • In the new urls.py adjust the backend arguments

     ... { 'backend': 'registration.backends.custom.DefaultBackend' }, ... 
  • Create a forms.py under custom . Adjust this form to your liking (fields and validations)

  • In the registration/urls.py point to the proper backend:

      # from registration.backends.default.urls import * from registration.backends.custom.urls import * 

That should work. Particularly this works because:

  • Your custom/__init__.py will have a DefaultBackend class with a get_form_class method:

     def get_form_class(self, request): """ Return the default form class used for user registration. """ return RegistrationForm 
  • And you import your own RegistrationForm in that file, too:

     from registration.backends.custom.forms import RegistrationForm 

我不知道,断手,为什么它不工作,但我敢肯定你不需要编辑Django的注册的views.py ......你可以通过你的新CustomRegistrationFormUniqueEmail作为一个参数urls.py

您可以尝试在此处使用信号扩展django注册,并在此处http://dmitko.ru/?p=546

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM