Django имя пользователя редактировать вопрос - PullRequest
2 голосов
/ 14 июля 2011

Я хочу разрешить пользователям изменять свои имена пользователей, поэтому у меня есть форма:

class UserForm(models.ModelForm):

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name')

В шаблоне у меня есть блок приветствия, что-то вроде Hello, {{request.user.username}}

Когда я отправляю форму с именем пользователя, которое уже существует, выдается ошибка «Пользователь с этим именем пользователя уже существует.», Но в блоке приветствия я вижу Hello, username (где username - это то, которое я отправил).

Что я делаю не так? Кто-нибудь сталкивался с чем-то похожим?

Вот код просмотра:

@login_required
def persona_edit(request):

    form = PersonaForm(request.POST or None, instance=request.user.persona)
    user = User.objects.get(pk=request.user.pk)
    user_form = UserForm(request.POST or None, instance=user)

    if form.is_valid() and user_form.is_valid():
        form.save()
        user_form.save()
        messages.success(request, _(u'Profile updated'))
        return redirect('identity:dashboard')

    payload = {'form': form, 'user_form': user_form}
    return render(request, 'identity/persona_edit.html', payload)
...