Como atualizar o objeto Usuário sem criar um novo?

A seguir funciona bem com shell:

>>> from django.contrib.auth.models import User
>>> user=User.objects.get(pk=1)
>>> user.first_name = u'Some'
>>> user.last_name = u'Name'
>>> user.save()
>>> user.first_name
u'Some'
>>> user.last_name
u'Name'

Então eu tento fazer o mesmo com os formulários:

# forms.py
class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['first_name', 'last_name']


# views.py
def edit_names(request, template_name="registration/edit_names.html"):
    if request.method == "POST":
        form = UserForm(data=request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.save()
            url = urlresolvers.reverse('my_account')
            return HttpResponseRedirect(url)
    else:
        form = UserForm(instance=request.user)
    page_title = _('Edit user names')
    return render_to_response(template_name, locals(),
        context_instance=RequestContext(request))

# edit_names.html
<form action="." method="post">{% csrf_token %}
    <table>
        {{ form.as_table }}
        <tr><td colspan="2">
            <input type="submit" />
        </td></tr>
    </table>
</form>

Eu abro a página no navegador e vejo dois camposFirst name eLast name. Ao preencher os campos e enviar o formulário, recebo o erro:

 Exception Type:    IntegrityError
Exception Value:    column username is not unique

Eu também tentei adicionar['username'] à lista de campos no formulário de usuário. Se eu enviar o formulário com meu nome de usuário (como request.user), o formulário exibirá mensagem de erro:

User with this Username already exists.

Se eu alterar o nome de usuário para um nome exclusivo, o novo usuário com esse nome de usuário será criad

A questão é:Como atualizar o objeto Usuário, não criar um novo?

Desculpe por ser tão detalhado, mas tive uma pesquisa difícil aqui e não consegui encontrar a resposta para minha pergunt

BTT, esses casos não funcionam para mim:

Extending UserCreationForm para incluir email, nome e sobrenomeadd nome e sobrenome no django-profileComo criar um formulário UserProfile no Django com modificações first_name, last_nam

EDITAR

Como sugerido @fceruti Acabei de adicionar a request.method == 'post' branch this:

form = UserForm(data=request.POST, instance=request.user)

questionAnswers(4)

yourAnswerToTheQuestion