我正在使用SelectDateWidget和django-registration在注册时保存出生日期。我已经尝试过排除生日,并且创建了一个配置文件并与额外的数据一起保存。我不太清楚哪里一切都出错了。Django SelectDateWidget不保存日期
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()
注册用户,当我得到的错误是:profile_profile.dob不得为NULL
发布数据正在生成dob_day,dob_month和dob_year。我试图清理数据,但无济于事。任何援助将不胜感激。
解决:
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()
我正在使用自定义后端,我已经能够保存first_name和last_name。以下内容:'高清clean_dob(个体经营): \t \t DOB = self.cleaned_data.get( 'DOB') \t \t打印dob'在我forms.py是打印日期以正确的格式错误发生之前。仍然如此解决。 – 2012-01-06 02:53:27
请在我的答案最后看到调试笔记。 – Haes 2012-01-06 09:19:57
非常感谢你的建议,在后端保存了窍门。请参阅上面的解决方案。我试图避免自定义视图。我没有看到任何理由。 – 2012-01-06 16:02:07