Sto usando SelectDateWidget con la registrazione django per salvare una data di nascita al momento della registrazione. Ho provato ad escludere il compleanno e il profilo è stato creato e salvato con i dati aggiuntivi. Non sono abbastanza sicuro di dove tutto stia andando storto.Django SelectDateWidget non salva data
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()
L'errore che sto ottenendo al momento della registrazione l'utente è: profile_profile.dob non possono essere NULL
I dati del post generano dob_day, dob_month e dob_year. ho provato a pulire i dati, ma senza alcun risultato. Qualsiasi assistenza sarebbe molto apprezzata.
risolto:
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()
Sto utilizzando un back-end personalizzato e sono stato in grado di salvare un first_name e last_name. il seguente: 'def clean_dob (self): \t \t dob = self.cleaned_data.get ('DOB') \t \t stampa dob' nel mio forms.py è stampare la data nel formato corretto prima che si verifichi l'errore. Ancora così soluzione. –
Vedere le note di debug alla fine della mia risposta. – Haes
Grazie mille per il tuo consiglio di risparmio nel back-end ha fatto il trucco. Vedi sopra per la mia soluzione. Stavo cercando di evitare la personalizzazione della vista. Non ho visto alcuna ragione per –