Как сделать смену имени пользователя django?
Хочу реализовать на сайте смену ника пользователя в стандартной модели User через форму. Я попытался сделать это сам, но не вышло, в ник записывается просто какая-то ссылка. Как это реализовать правильно?
Вот моя попытка реализации:
Форма
class UserForm(forms.ModelForm):
new_name = forms.CharField(label='Ваше имя', max_length=255)
class Meta:
model = User
fields = ('username',)
def clean_username(self, new_name=new_name):
new_name = self.cleaned_data.get(new_name)
name = self.cleaned_data['username']
User.objects.filter(username=name).update(username=new_name)
Класс представления:
class ChangeName(LoginRequiredMixin, FormView):
form_class = UserForm
template_name = 'infoprjct/change_name.html'
success_url = 'home'
Заранее спасибо!
Смог решить свою проблему. Возможно кому либо будет полезно.
В форме нужно поставить проверку аккаунта через эмеил, или через любое другое поле. Примерно так это выглядит:
class UserForm(forms.ModelForm):
username = forms.CharField(label='Новое имя', max_length=255)
email = forms.EmailField(label='Ваша почта', max_length=255)
class Meta:
model = User
fields = ('email', 'username')
def clean_username(self):
name = self.cleaned_data.get('username')
email = self.cleaned_data.get('email')
User.objects.filter(email=email).update(username=name)
В классе представления все оставляем так же. Лучше решения пока что не нашел, и да оно требует некоторых допилов(под индивидуальности проекта), но все же оно работает. Если есть варианты лучше - обязательно пишите.