[Answer]-How do i get user profile in django 1.7

1πŸ‘

βœ…

To edit both User and Profile instance you have to use two forms:

class UserForm(forms.ModelForm):
    class Meta:
        class = User
        fields = ('username', 'first_name', 'last_name')

class ProfileForm(forms.ModelForm):
    class Meta:
        class = UserProfile
        exclude = ('user', )

@login_required
def edit_profile(request):
    user = request.user
    profile = user.userprofile
    if request.method == 'POST':
        user_form = UserForm(request.POST, instance=user)
        profile_form = ProfileForm(request.POST, instance=profile)
        if all([user_form.is_valid(), profile_form.is_valid()]):
            user_form.save()
            profile_form.save()
            return redirect('.')
    else:
        user_form = UserForm(instance=user)
        profile_form = ProfileForm(instance=profile)
    return render(request, 'user_profile.html',
                       {'user_form': user_form, 'profile_form': profile_form})

And the template should contain both forms in the single <form> tag:

<form action="." method="POST">
    {% csrf_token %}
    {{ user_form.as_p }}
    {{ profile_form.as_p }}
    <button>Update</button>
</form>
πŸ‘€catavaran

Leave a comment