First_name добавляется к кортежу

Я использую django-allauth. Я добавил дополнительные поля в форму (имя_и фамилия) в форме: myapp/forms.py

class CustomSignupForm(forms.Form):

    first_name = forms.CharField(max_length=30, label="first_name", strip=True, widget=forms.TextInput(attrs={'placeholder': "name", }))
    last_name = forms.CharField(max_length=30, label='last_name', strip=True, widget=forms.TextInput(attrs={'placeholder': 'last_name',}))

 def signup(self, request, user):
        user.first_name = self.cleaned_data['first_name'],
        user.last_name = self.cleaned_data['last_name']
        user.save()
        return user

после чего в настройках я указал ссылку на эту форму. При регистрации эти два поля появились, но:

Теперь, при регистрации, мое имя_первое находится в кортеже.

enter image description here

Вывод в шаблоне:

{{user.first_name}} 

Последнее имя отображается нормально. Что можно сделать, чтобы первое имя было не в кортеже, а просто строкой?

Вы поставили запятую в конце user.first_name = self.cleaned_data['first_name'],

Уберите запятую, и это решит вашу проблему.

Ваша проблема кажется легко устранимой, в конце user.first_name = self.cleaned_data['first_name'], стоит запятая, и Django рассматривает это как кортеж.

Ваш forms.py должен выглядеть следующим образом:

class CustomSignupForm(forms.Form):

    first_name = forms.CharField(max_length=30, label="first_name", strip=True, widget=forms.TextInput(attrs={'placeholder': "name", }))
    last_name = forms.CharField(max_length=30, label='last_name', strip=True, widget=forms.TextInput(attrs={'placeholder': 'last_name',}))

 def signup(self, request, user):
        user.first_name = self.cleaned_data['first_name'] # just removed the comma :)
        user.last_name = self.cleaned_data['last_name']
        user.save()
        return user
Вернуться на верх