Баг вывода имени пользователя в Django

Возникла следующая проблема: на сайте организована страница с настройками, где пользователь может поменять свой username. При этом, как многие знают, Django сам проводит валидацию и если ввести имя, которое уже существует в БД, то выводится сообщение об ошибке Django валидация

В это же время, у меня на этой же странице выводится имя пользователя <p>Добро пожаловать, {{ user.username }}</p>.

И это самое имя {{ user.username }} переименовывается на странице в уже созданное в БД, в моём случае в "admin". То есть, Django валидация отработала, но username всё равно поменялся на уже существующее имя другого пользователя.

Вывод ника {{ user.username }}

Если же выйти с этой страницы, а потом опять зайти на неё, то всё вернется обратно, и будет уже выводиться корректный ник пользователя.

введите сюда описание изображения

Кто сталкивался с этим и сможет объяснить как исправить эту проблему? Спасибо.

forms.py:

from django.contrib.auth.models import User


class EditNameForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('username',)
        widgets = {
            'username': forms.TextInput(attrs={'class': 'form-control'}),
        }

views.py:

from .forms import EditNameForm


def ProfileSettings(request):
    form = EditNameForm()
    if request.method == 'POST':
        form = EditNameForm(request.POST, instance=request.user)
        if form.is_valid():
            form.save()

context = {'form': form}
return render(request, 'pzmz/profile_settings.html', context)
Вернуться на верх