How do you write a save method for forms in django?

django, django-forms, django-models, python

Solution

this could help you

def save(self):
    data = self.cleaned_data
    user = User(email=data['email'], first_name=data['first_name'],
        last_name=data['last_name'], password1=data['password1'],
        password2=data['password2'])
    user.save()
    userProfile = UserProfile(user=user,gender=data['genger'],
        year=data['year'], location=data['location'])
    userProfile.save()

Problem

I have two models in Django: User (pre-defined by Django) and UserProfile. The two are connected via a foreign key. I'm creating a form that allows a customer to edit their user profile. As such, this form will be based on both models mentioned. How do I create a save() method for this form? What are the steps/requirements in completing the save function? Here's what I have so far in forms.py: ``` class UserChangeForm(forms.Form): #fields corresponding to User Model email = forms.EmailField(required=True) first_name = forms.CharField(max_length = 30) last_name = forms.CharField(max_length = 30) password1 = forms.CharField(max_length=30, widget=forms.PasswordInput) password2 = forms.CharField(max_length=30, widget=forms.PasswordInput) #fields corresponding to UserProfile Model gender = forms.CharField(max_length = 30, widget=forms.Select) year = forms.CharField(max_length = 30, widget=forms.Select) location = forms.CharField(max_length = 30, widget=forms.Select) class Meta: fields = ("username", "email", "password1", "password2", "location", "gender", "year", "first_name", "last_name") def save(self): data = self.cleaned_data # What to do next over here? ``` Is this a good start or would anyone recommend changing this up before we start writing the save() function?

Original source