Tôi đang sử dụng SelectDateWidget với đăng ký django để lưu Ngày sinh khi đăng ký. Tôi đã thử loại trừ ngày sinh và tiểu sử được tạo và lưu với dữ liệu bổ sung. Tôi không hoàn toàn chắc chắn rằng mọi thứ đang đi sai.Django SelectDateWidget không lưu ngày
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()
Các lỗi tôi nhận được khi đăng ký sử dụng là: profile_profile.dob có thể không là NULL
Dữ liệu bài đăng được tạo ra dob_day, dob_month và dob_year. tôi đã cố gắng làm sạch dữ liệu nhưng không có kết quả. Bất kỳ sự trợ giúp nào cũng sẽ được đánh giá cao.
quyết:
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()
Tôi đang sử dụng chương trình phụ trợ tùy chỉnh và tôi đã có thể lưu first_name và last_name. như sau: 'def clean_dob (self): \t \t dob = self.cleaned_data.get ('dob') \t \t in dob' trong forms.py của tôi là in ngày theo đúng định dạng trước khi xảy ra lỗi. Vẫn còn như vậy giải pháp. –
Vui lòng xem ghi chú gỡ lỗi ở cuối câu trả lời của tôi. – Haes
Cảm ơn bạn rất nhiều cho lời khuyên của bạn tiết kiệm trong backend đã làm các trick. Xem ở trên cho giải pháp của tôi. Tôi đã cố gắng tránh tùy chỉnh chế độ xem. Tôi không thấy lý do gì cả. –