본문 바로가기
장고 프레임워크

forms.py

by 문자메일 2020. 6. 13.

@login_required

def comment_new(requestpost_pk):

    post = get_object_or_404(Post, pk=post_pk)

 

    if request.method == 'POST':

        form = CommentForm(request.POST, request.FILES)

        if form.is_valid():

            comment = form.save(commit=False# author와 post 정보가 form에 지정되어 있지 않기 때문

            comment.post = post

            comment.author = request.user

            comment.save()

            return redirect(comment.post)

    else:

        form = CommentForm()

    return render(request, "instagram/comment_form.html", {

        "form":form,

    })

 

-form.save(commit=True)가 default인대, False로 바꾸지 않으면 자동으로 Comment Model DB에 save 실행된다.

따라서 form에서 DB insert하는대 필요한 정보들을 전부 받지 못하였다면 위처럼 comment.post-.author같이 정보를 다 채우고 수동으로 저장을 완료 해야한다.

-개인적으로 comment에 외래키 Model Post를 저장할 때 Model 정보를 통째로 가져와야 하는지 잘 모르겠다. 어떻게 동작하는지 코드 동작상에서 확인 필요... post_pk만 넘기면 안되는 걸까?

 

댓글