в django метод регистрации RegistrationForm не переопределяется - PullRequest
0 голосов
/ 28 июня 2019

У меня есть этот рабочий RegistrationForm в Django == 1.10.6.

Форма работает, потому что когда я меняю метку, она отражается в форме, но метод регистрации никогда не выполняется.

Я уже некоторое время борюсь с этим, чего мне здесь не хватает?

Вывод никогда не печатается, пользователь не сохраняется должным образом и модуль ipdb не запускается.

# -*- coding: utf-8 -*-

from django import forms

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Field, Fieldset, ButtonHolder, Submit, HTML, Div
from crispy_forms.bootstrap import TabHolder, Tab, Accordion, AccordionGroup

from alistate.core.utils import LowerField

from allauth.account.forms import SignupForm as SignupFormBase
from django.contrib.auth import get_user_model

class SignupForm(SignupFormBase):

    def __init__(self, *args, **kwargs):
        super(SignupForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
            Div(
                Div(Field('username'), css_class='col-md-12'),
                Div(Field('email'), css_class='col-md-12'),
                Div(Field('password1'), css_class='col-md-12'),
                Div(Field('password2'), css_class='col-md-12'),
            css_class='row'),
            Div(
                Div(Field('nombre1'), css_class='col-md-6'),
                Div(Field('apellido1'), css_class='col-md-6'),
            css_class='row'),
            Div(
                Div(Field('nombre2'), css_class='col-md-6'),
                Div(Field('apellido2'), css_class='col-md-6'),
            css_class='row'),
            Div(
                Div(Field('telefono'), css_class='col-md-12'),
            css_class='row'),
            Div(
                Div(Field('fecha_religiosa', css_class="datetimepicker-signup"), css_class='col-md-12'),
            css_class='row'),
            Div(
                Div(Field('como_conocio'), css_class='col-md-12 register-know'),
            css_class='row'),
        )

    nombre1 = LowerField(label="Nombreeee 1 (novia/o).", required=True, max_length=50)
    apellido1 = LowerField(label="Apellido 1 (novia/o).", required=True, max_length=50)
    nombre2 = LowerField(label="Nombre 2 (novia/o).", required=True, max_length=50)
    apellido2 = LowerField(label="Apellido 2 (novia/o).", required=True, max_length=50)
    fecha_religiosa = forms.DateTimeField(required=True)
    telefono = LowerField(label=u"Teléfono", required=True, max_length=50)
    como_conocio = forms.CharField(label=u"¿Cómo nos conociste?", required=False, widget=forms.Textarea)
    class Meta:
        model = get_user_model()   # or whatever your User model is

    def signup(self, request, user):
        print("yyehehehehe")
        import ipdb
        ipdb.set_trace()
        user.nombre1 = self.cleaned_data['nombre1']
        user.apellido1 = self.cleaned_data['apellido1']
        user.nombre2 = self.cleaned_data['nombre2']
        user.apellido2 = self.cleaned_data['apellido2']
        user.fecha_religiosa = self.cleaned_data['fecha_religiosa']
        user.telefono = self.cleaned_data['telefono']
        user.como_conocio = self.cleaned_data['como_conocio']
        user.save()
        return user

1 Ответ

0 голосов
/ 29 июня 2019

Заменив def signup на def signup Я смог заставить его работать

def save(self, request):
    user = super(SignupForm, self).save(request)
    user.nombre1 = self.cleaned_data['nombre1']
    user.apellido1 = self.cleaned_data['apellido1']
    user.nombre2 = self.cleaned_data['nombre2']
    user.apellido2 = self.cleaned_data['apellido2']
    user.celular = self.cleaned_data['celular']
    user.fecha_religiosa = self.cleaned_data['fecha_religiosa']
    user.telefono = self.cleaned_data['telefono']
    user.como_conocio = self.cleaned_data['como_conocio']
    user.save()
    return user
...