Django 1.4 Want to make birthdate field utilizing SelectDateWidget not required on my form -
i trying create form user change profile account information on own. have can update first, last , username, gender , 'birthdate'. 'birthdate' 1 can't not required. form checks if no input given in of forms fields , not update users information if no changes made.
~~models.py~~
class account(models.model): user = models.onetoonefield(user) #link (pointer) users other information in user model birthdate = models.datefield(blank = true, null = true) # true makes field optional gender = models.charfield(max_length = 10, choices = gender_choice, null = true, blank = true) profilepic = models.imagefield(upload_to = "profilepics/%y/%m/%d", default = "profilepics/default.jpg", blank = true) --form gather user setting changes
class editaccountform(forms.form): username = forms.charfield(max_length = 30, required = false) first_name = forms.charfield(max_length = 30, required = false) last_name = forms.charfield(max_length = 30, required = false) birthdate = forms.datefield(widget = selectdatewidget(required = false, years = range(2022, 1930, -1))) # make birthdate drop down selectable gender = forms.charfield(max_length = 10, widget=forms.select(choices = gender_choice),)# null = true) ~~views.py
def accountsettings(request): sluggedsettingerror = request.get.get('error', '') # error message slugged character settingerror = sluggedsettingerror.replace('-', ' ') # form variable may need inside below if statement settingform = editaccountform(request.post or none) # variable called in edit_user.html if request.method == 'post': if settingform.is_valid(): usersettings = request.user.get_profile() # returns current settings of users profile if request.post['gender'] == '---': print "gender not changed" else: usersettings.gender = request.post['gender'] # add check birthdate submission usersettings.birthdate = settingform.cleaned_data.get('birthdate') # requires input format yyyy-mm-dd # check if first name submission not changed if request.post['first_name'] == '': print "first name not changed" else: usersettings.user.first_name = request.post['first_name'] # check if last name submission not changed if request.post['last_name'] == '': print "last name not changed" else: usersettings.user.last_name = request.post['last_name'] # check if username submission not changed if request.post['username'] == '': print "username not changed" else: usersettings.user.username = request.post['username'] # check if profilepicture submission not changed # if request.post['profilepic'] == none: # print "profile picture not changed" # else: # usersettings.profilepic = request.post['profilepic'] usersettings.user.save() # save changes fields in used auth library usersettings.save() # save altered , unaltered settings return httpresponseredirect('/') return render_to_response("user_settings.html", {'settingform': settingform, 'settingerror': settingerror}, context_instance = requestcontext(request)) is there way make birthdate field not required whilst using selectdatewidget() since current attempt of required = false not work. or possibly better method allow user edit settings , submit changes?
thanks in advanced.
i expect problem derives fact that:
settingform.cleaned_data.get('birthdate') won't return none hands empty string '' isn't date or datetime field expects.
you should return nonetype if user hasn't selected date.
Comments
Post a Comment