@login_required
def comment_new(request, post_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만 넘기면 안되는 걸까?
'장고 프레임워크' 카테고리의 다른 글
장고 기본 인증) 1 로그인 처리 (0) | 2020.06.18 |
---|---|
5 - mixins 상속을 통한 APIView 로직 재사용 (0) | 2020.06.17 |
HINT: Add or change a related_name argument to the definition for 'Post.like_user_set' or 'Post.author'. (0) | 2020.06.11 |
4) APIView를 활용한 뷰 만들기 (0) | 2020.06.07 |
views.py에 관하여 (0) | 2020.06.04 |
댓글