django's noob question:
i use dango.contrib.auth managing users of site. now, i'm developing 'settings page', user can edit first name, last name, , email address. in settings page want checkbox "newsletter".
questions are: 1) should put newsletter field in database? 2) how can create form editing these informations?
thanks.
-- update --
now i've in models.py:
class userprofile(models.model): user = models.foreignkey(user, unique = true) favourite_color = models.charfield(max_length = 40)
and in forms.py:
class usersettingsform(forms.modelform): class meta: model = user exclude = ('password',) def save(self, commit=false): user = super(usersettingsform,self).save(commit) favourite_color = self.cleaned_data.get('favourite_color', '') if favourite_color , user.favourite_color none: userprofile(user=user).save() if not slug: userprofile.objects.filter(user=user).delete() if not commit: user.save() return user
i'm bit confused. edit informations first name, last name, email , favourite color in settings form i'm doing wrong.
you want @ user profiles.
edit: regarding forms, there stopping using 2 forms? think django ignores fields in http request don't match form, feed request 2 forms. when rendering template, django doesn't generate <form>
tags or submit button, put both forms in same <form>
. in view (modifying django example):
def edit_user_view(request): if request.method == 'post': # if form has been submitted... # 2 forms bound post data userform = userform(request.post) profileform = profileform(request.post) if userform.is_valid() , userform.is_valid(): # validation rules pass # process data in userform. , profileform.cleaned_data # ... return httpresponseredirect('/thanks/') # redirect after post else: # unbound forms userform = userform() profileform = profileform() return render_to_response('edit_user.html', { 'userform': userform, 'profileform': profileform, })
and in template:
<form action="/contact/" method="post">{% csrf_token %} {{ userform.as_p }} {{ profileform.as_p }} <input type="submit" value="submit" /> </form>
this starting point, don't see reason can't work.
Comments
Post a Comment