Estoy usando SelectDateWidget con django-registration para guardar una fecha de nacimiento en el registro. Intenté excluir el cumpleaños y se creó un perfil y se guardó con los datos adicionales. No estoy muy seguro de dónde está yendo todo mal.Django SelectDateWidget no guarda la fecha
models.py
class Profile(models.Model):
...
dob = models.DateField(_('birthday'))
forms.py
from django.forms.extras.widgets import SelectDateWidget
class ProfileRegistration(RegistrationFormTermsOfService):
...
dob = forms.DateField(widget=SelectDateWidget(years=range(1999,1939,-1)),
label=_("Birthday"),
)
prifilebackend.py
from registration.forms import RegistrationForm
from registration.models import RegistrationProfile
...
class Backend(default.DefaultBackend):
...
p = Profile.objects.get(user=new_user)
p.dob=kwargs['dob']
p.save()
El error que estoy recibiendo al registrarse el usuario es: profile_profile.dob no puede ser NULL
Los datos de publicación generan dob_day, dob_month y dob_year. He tratado de limpiar los datos, pero fue en vano. Cualquier ayuda sería muy apreciada.
Resuelto:
profilebackend.py
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
u = User.objects.get(username=new_user.username)
u.first_name = kwargs['first_name']
u.last_name = kwargs['last_name']
gender = kwargs['gender']
dob = kwargs['dob']
p = Profile(user = new_user, gender = gender, dob = dob)
p.save()
u.save()
Estoy usando un backend personalizado y he podido guardar un first_name y last_name. lo siguiente: 'def clean_dob (auto): \t \t DOB = self.cleaned_data.get ('DOB') \t \t de impresión dob' en mi forms.py es imprimir la fecha en el formato correcto antes de que ocurra el error. Aún así solución. –
Consulte las notas de depuración al final de mi respuesta. – Haes
Muchas gracias por su consejo, ahorrar en el back-end hizo el truco. Vea arriba para mi solución. Estaba tratando de evitar la personalización de la vista. No vi ninguna razón para hacerlo. –