I found a way to do this! ( The last answer threw me some errors) Let me explain this: (Django 1.10.5 and Django-registration-redux 1.4)
application /models.py:
class Profile(models.Model): user = models.OneToOneField(User, primary_key=True) passport_id = models.IntegerField(max_length=10)
application /forms.py:
from registration.forms import RegistrationFormUniqueEmail from django import forms from .models import Profile class ProfileForm(RegistrationFormUniqueEmail): passport = forms.IntegerField(max_length=10)
Then I created the -famous-regbackend.py file. Note that the register method accepts only one parameter (form). You must remember to create and save a new object (record) in the database model table, as in the following code:
application /regbackend.py
from registration.backends.default.views import RegistrationView from .forms import ProfileForm from .models import Profile class MyRegistrationView(RegistrationView): form_class = ProfileForm def register(self, form_class): new_user = super(MyRegistrationView, self).register(form_class) p = form_class.cleaned_data['passport'] new_profile = Profile.objects.create(user=new_user, passport=p) new_profile.save() return new_user
root /urls.py
from app.regbackend import MyRegistrationView urlpatterns = [ url(r'^accounts/register/$', MyRegistrationView.as_view(), name='registration_register'), url(r'^accounts/', include('registration.backends.default.urls'))]
After that, you can configure some other things for the field (validations, etc.).
source share