Баг вывода имени пользователя в Django
Возникла следующая проблема:
на сайте организована страница с настройками, где пользователь может поменять свой username. При этом, как многие знают, Django сам проводит валидацию и если ввести имя, которое уже существует в БД, то выводится сообщение об ошибке
В это же время, у меня на этой же странице выводится имя пользователя <p>Добро пожаловать, {{ user.username }}</p>
.
И это самое имя {{ user.username }}
переименовывается на странице в уже созданное в БД, в моём случае в "admin". То есть, Django валидация отработала, но 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)