Это было долгое время после того, как последний ответ дан, но надеюсь, что это поможет кому-то. Пользователь расширен с помощью столбца «account_type».
forms.py
from django import forms
from allauth.account.forms import SignupForm
class AgentSignUpForm(SignupForm):
first_name = forms.CharField(max_length=30, label='First name', required=False)
last_name = forms.CharField(max_length=30, label='Last name', required=False)
def save(self, request):
user = super(AgentSignUpForm, self).save(request)
user.account_type = 1
user.save()
return user
class CandidateSignUpForm(SignupForm):
first_name = forms.CharField(max_length=30, label='First name', required=False)
last_name = forms.CharField(max_length=30, label='Last name', required=False)
def save(self, request):
user = super(CandidateSignUpForm, self).save(request)
user.account_type = 2
user.save()
return user
views.py
from django.shortcuts import render
from allauth.account.views import SignupView
from .forms import AgentSignUpForm
from .forms import CandidateSignUpForm
class AgentSignUp(SignupView):
template_name = 'allauth/signup_agent.html'
form_class = AgentSignUpForm
redirect_field_name = 'next'
view_name = 'agent_sign_up'
def get_context_data(self, **kwargs):
ret = super(AgentSignUp, self).get_context_data(**kwargs)
ret.update(self.kwargs)
return ret
class CandidateSignUp(SignupView):
template_name = 'allauth/signup_candidate.html'
form_class = CandidateSignUpForm
redirect_field_name = 'next'
view_name = 'candidate_sign_up'
def get_context_data(self, **kwargs):
ret = super(CandidateSignUp, self).get_context_data(**kwargs)
ret.update(self.kwargs)
return ret
urls.py
from django.conf.urls import url, include
from . import views
urlpatterns = [
url(r'^agent-sign-up/', views.AgentSignUp.as_view(), name='agent-sign-up'),
url(r'^candidate-sign-up/', views.CandidateSignUp.as_view(), name='candidate-sign-up'),
]
2 шаблоны
#templates/allauth/signup_agent.html
<form method="post" action="{% url 'agent-sign-up' %}">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="ok" />
</form>
#templates/allauth/signup_candidate.html
<form method="post" action="{% url 'candidate-sign-up' %}">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="ok" />
</form>
ли вам когда-нибудь решить это? Я за чем-то очень похож ... – awidgery
Мне это очень нужно прямо сейчас ... любые идеи? – staggart
Старый вопрос, я знаю, но было бы полезно получить ответ. Посмотрите это сообщение https://stackoverflow.com/a/44517924/3549503 Это пошаговое руководство, чтобы иметь несколько типов и форм пользователя с django-allauth – mrnfrancesco