안녕하세요? 좋은 강의와 답변에 늘 감사드립니다.
강의를 들으면서 살짝 헷갈리는 부분이 있어 질문 드립니다.
@login_required
def profile_edit(request):
if request.method == "POST":
form = ProfileForm(request.POST,request.FILES,instance=request.user)
#request.Post,request.Files라고 되어 있어야 post메서드와 files를 받을 수 있음
if form.is_valid():
form.save()
messages.success(request,"프로필을 수정/저장했습니다")
return redirect('profile_edit')
else:
form = ProfileForm(instance=request.user)
return render(request,"accounts/profile_edit_form.html",{"form":form})
ProfileForm은 forms.py에서 설정된 모델폼입니다.
1.
form = ProfileForm(request.POST~) 라고 되어 있는 부분을
'해당 폼에서(실제 브라우저에서) 내용이 채워지고 제출되었을 떄, post메서드로 들어온 부분(request.POST)이나 파일(request.FILE)로 값들이 지정된 Profileform을 form으로 삼겠다 '라고 이해하고 있었는데
, instance=request.user부분이 좀 헷갈립니다.
instance=request.user가 어떤 의미로 사용된 것인가요?(왜 사용된 것인가요?)
2.form = ProfileForm(request.POST~)
에서보면, form은 ProfileForm의 인스턴스인데,
그렇다면 form.save()를
ProfileForm의 양식에 맞게 채워진 form의 내용을 한행의 데이터로써 db에 저장한다? 정도의 느낌으로 받아들여도 될까요?
*댓글의 질문이 더 혼란스럽게 느껴질 것 같아 삭제하겠습니다 ㅠㅠ
수정할 모델의 인스턴스 = 수정할 모델의 db한행
-모델폼에서 수정할 모델의 인스턴스를 설정해 준다는 것 >> 수정할 모델db중 한행을 선택해준다는 것
-모델폼에서 수정할 모델의 인스턴스를 설정해주지 않음 >> 수정할 모델 db에 새로운 행(인스턴스)를 생성