Редактирование профиля не обновляется
Я редактирую профиль, используя фреймворк Django. Проблема заключается в том, что я не могу сохранить или обновить данные, введенные пользователем, и он выдает список ошибок. Если я делаю его не обязательным, он отображается пустым в системе. Как я могу сохранить только те ntry, которые пользователь обновил, а все остальные записи оставить без изменений? Спасибо
Ошибка: <ul class="errorlist"><li>username<ul class="errorlist"><li>This field is required.</li></ul></li><li>email<ul class="errorlist"><li>This field is required.</li></ul></li><li>password<ul class="errorlist"><li>This field is required.</li></ul></li><li>confirm_password<ul class="errorlist"><li>This field is required.</li></ul></li><li>password_readonly<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
Редактировать профиль пользователя
def sa_profile_edit(request):
if request.user.is_authenticated:
form =UserFormAdmin(instance=request.user)
form_profile = MemberForm(instance=request.user.usermember)
context = {'form':form, 'form_profile': form_profile}
if request.method == 'POST':
form =UserFormAdmin(request.POST,instance=request.user)
form_profile = MemberForm(request.POST, request.FILES, instance=request.user.usermember)
if form.is_valid() and form_profile.is_valid():
form.save()
form_profile.save()
messages.success(request,'Profile Successfully Updated')
return redirect('sa_profile')
else:
print(form.errors)
form =UserFormAdmin(instance=request.user)
form_profile = MemberForm(instance=request.user.usermember)
user_data = request.user
context = {'form':form,'user_data':user_data, 'form_profile': form_profile}
return render(request, 'pages/sa_editProfile.html', context)
return render(request, 'pages/sa_editProfile.html', context)
Если роль супер - только супер может просматривать это
def check_role_super(user):
if user.role == 3:
return True
else:
raise PermissionDenied
Модель
Форма
class MemberForm(forms.ModelForm):
birthdate = forms.DateField(widget=DateInput(attrs={'class': 'form-control ', }))
profile_picture = forms.FileField(widget=forms.FileInput(attrs={'class': 'btn btn-info'}))
class Meta:
model = userMember
fields = ['birthdate', 'upload_id', 'profile_picture']
class UserFormAdmin(forms.ModelForm):
class Meta:
model = User
fields = ['first_name', 'middle_name', 'last_name', 'username', 'email', 'mobile_number', 'password']
first_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Jones', 'class': 'form-control ', }))
middle_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'A', 'class': 'form-control', }))
last_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Smith', 'class': 'form-control',}))
mobile_number = forms.CharField(max_length=15, validators=[RegexValidator(
'^\+[0-9]{1,3}\.?\s?\d{8,13}', message="Phone number must not consist of space and requires country code. eg : +639171234567")],widget=forms.TextInput(attrs={'placeholder': '09123456789', 'class': 'form-control',}),
error_messages={'unique': ("Mobile Number already exists.")})
email = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'jonesmith@gmail.com', 'class': 'form-control',}),
error_messages={'unique': ("Email already exists.")},)
username = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Jones_Smith31', 'class': 'form-control',}),
error_messages={'unique': ("Username already exists.")},)
password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': '********', 'class': 'form-control',}))
#password = forms.CharField(validators=[MinLengthValidator(8),RegexValidator('^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z])$', message="Password should be a combination of Alphabets and Numbers")], widget=forms.PasswordInput(attrs={'placeholder': '********', 'style': 'width: 460px; '}))
confirm_password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': '********', 'class': 'form-control', }))
password_readonly = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': '********', 'class': 'form-control h6-password', 'readonly':'readonly',}))
def clean(self):
clean_data = super(UserFormAdmin, self).clean()
password = clean_data.get('password')
confirm_password = clean_data.get('confirm_password')
if password != confirm_password:
raise forms.ValidationError(
"Password and Confirm Password does not match!"
)