Как реализовать страницу редактирования профиля?

Я пытаюсь сделать свой вид для редактирования профиля, но он не работает при сохранении данных, я не знаю, что я делаю неправильно, если он должен работать как обычная форма, правильно? Форму можно увидеть в моем шаблоне, проблема в том, что при сохранении она ничего не сохраняет

views.py

def EditProfilePageView(request):
    # dictionary for initial data with
    # field names as keys
    context = {}

    # add the dictionary during initialization
    form = RegisterForm(request.POST or None)
    if form.is_valid():
        form.save()
        return redirect('profile')


    context['form'] = form
    return render(request, 'Usuarios/edit-profile.html', context)

form.py


class RegisterForm(UserCreationForm):
    username=forms.CharField(label="Usuario",widget=forms.TextInput(attrs={'class': 'form-control'}))
    email=forms.EmailField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    phone1=forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    phone2=forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    fax = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    email = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    website = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    socialMedia1 = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    socialMedia2 = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    socialMedia3 = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    alternativeContact = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    country = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    address = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    city = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    state = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
    zip = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))




    password1 = forms.CharField(
        label="Contraseña",
        widget=forms.PasswordInput(attrs={'class':'form-control', 'type':'password', 'align':'center'}),
    )
    password2 = forms.CharField(
        label="Confirma Contraseña",
        widget=forms.PasswordInput(attrs={'class':'form-control', 'type':'password', 'align':'center'}),
    )


    class Meta:
        model=User
        fields=['phone1','phone2','fax','email','website','socialMedia1','socialMedia2',
                'alternativeContact','country','address','city','state','zip']
        widgets = {
            'password': forms.TextInput(attrs={'class': 'form-control'}),
        }


Плохая новость, вы не можете использовать модель UserCreationForm для сохранения пользовательских полей, таких как город, зип, ...и т.д.

модель UserCreationForm разработана для работы с обычными полями модели User, встроенными в Django, такими как:

fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', )

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

тогда вы можете отказаться от работы с моделью UserCreationForm, вы можете настроить свои собственные формы с помощью ModelForm для достижения вашей цели

Вернуться на верх