Здравствуйте. Имеется модель пользователя MyUser. В форме UserInf меняю даю возможность пользователю изменить от 0 до всех полей формы и, соответственно, модели. Как отслеживать, какие поля изменены, и не перезаписывать не измененные поля на дефолтные пустые строки?
На данный момент есть следующая view:
def profile_change(request):
if request.method == 'GET':
current_inf = MyUser.objects.get(id = request.user.id)
form = UserInf()
return render(request, 'profile_change.html', context={'edit_form':form,
'user':current_inf})
elif request.method == 'POST':
form = UserInf(request.POST)
if form.is_valid():
current_password = request.user.password
form_cleaned = form.cleaned_data
if check_password(form_cleaned['old_password'],current_password):
if form_cleaned['password'] == form_cleaned['password2']:
user = form.save(commit=False)
user.password = form_cleaned['password']
user.id = request.user.id
user.user = request.user
user.save()
id = request.user.id
else:
pass
else:
pass
user = MyUser.objects.get(id=request.user.id)
# как отследить, какие поля формы заполнены?
return HttpResponseRedirect(reverse('profile', kwargs={'id':id}))
else:
pass
И сама форма:
class UserInf(forms.ModelForm):
old_password = forms.CharField(widget=forms.PasswordInput, label="Старый пароль", required=False)
password = forms.CharField(widget=forms.PasswordInput, label="Введите пароль", required=False)
password2 = forms.CharField(widget=forms.PasswordInput, label="Подтвердите пароль",required=False)
class Meta:
model = MyUser
fields = ('photo','firstname','surname','patronym','country')
labels = {'firstname':'Имя','surname':'Фамилия',
'patronym':'Отчество','country':'Страна'}