Нужна форма регистрации с подтверждением по почте. Использую registration-redux. Помимо этого отображаю другую форму с дополнительными полями (связана с RegistrationForm через ForeignKey). После нажатия кнопки «Зарегистрироваться» данные с дополнительными полями сохраняются правильно (правда не привязана к пользователю), а данные формы RegistrationForm отправляются в Users а не в RegistrationProfile (и подтверждение по почте нет). Войти как пользователь я могу, но получить данные из Newperson не могу (получается что они не связаны)
Urls.py:
url(r'^accounts/register/$', 'newsletter.views.registration_newperson', name='registranion_newperson'),
url(r'^accounts/', include('registration.backends.default.urls')),
views.py:
def registration_newperson(request):
newperson_form=NewpersonForm(request.POST or None)
registration_form=RegistrationForm(request.POST or None)
if request.method == 'POST':
newperson_form = NewpersonForm(request.POST)
registration_form = RegistrationForm(request.POST)
if newperson_form.is_valid() and registration_form.is_valid():
newperson_form.save()
registration_form.save()
registration_form.newperson_form = newperson_form
registration_form.save()
else:
newperson_form = newperson_form
registration_form = registration_form
return render(request,'registration/registration_form.html', {
'newperson_form': newperson_form,
'registration_form': registration_form,})
models.py:
class Newperson(models.Model):
user = models.ForeignKey(RegistrationProfile, primary_key=True)
phone_number=models.CharField(max_length=10, blank=True, null=True)
first_name=models.CharField(max_length=120, blank=True, null=True)
last_name=models.CharField(max_length=120, blank=True, null=True)
date_of_birth = models.DateField(blank=True, null=True)
timestamp=models.DateField(auto_now_add=True, auto_now=False)
updated=models.DateField(auto_now_add=False, auto_now=True)
def __unicode__(self):
return self.user
forms.py:
class NewpersonForm(forms.ModelForm):
phone_number = PhoneField(code_length=3, num_length=7, label='Номер телефона')
date_of_birth = DateField(label='Дата рождения')
class Meta:
model=Newperson
widgets = {'date_of_birth': DateWidget, 'phone_number':PhoneWidget()}
fields=['first_name', 'last_name', 'phone_number', 'date_of_birth']
registration_form.html:
<form method="post" action="/accounts/register/">
{% csrf_token %}
{{ registration_form|crispy }}
{{ newperson_form|crispy }}
<input class="btn btn-primary" type="submit" value="{% trans 'Зарегистрироваться' %}" />
</form>