장고(파이썬) 게시물에 댓글 달기 구현 오류입니다.

조회수 602회

함수는 어느정도 끼워 넣었는데, 댓글 내용이 저장이 안됩니다. 모델은 게시글과 댓글 각각 만들어 줬고, 리뷰달때 평점도 입력하도록 구현했습니다.

forms.py (댓글)

class ReviewForm(forms.ModelForm):
    class Meta:
        model = Review
        fields = [
            "point",
            "content",
            "book",
        ]
        widgets = {
            "book": forms.HiddenInput(),
            "content": forms.TextInput(),
            "point": forms.Select(choices=REVIEW_POINT_CHOICES),
        }

    def save(self):
        review = super().save(commit=False)
        return review

views.py (게시물)

class BookDetail(DetailView):
    model = Book
    queryset = Book.objects.all()

    # context_object_name = "book"
    template_name = "book_detail.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["form"] = ReviewForm
        return context

    def post(self, request, *args, **kwargs):  # post요청이 들어왔을때.
        self.object = self.get_object()  # 현재페이지 object get.
        form = self.get_form()  # form데이터 받아오기

        if form.is_valid():  # form의 내용이 정상적일 경우
            return self.form_valid(form)  # form_valid함수 콜
        else:
            return self.form_invalid(form)

    def form_valid(self, form):  # form_valid함수
        review = form.save(commit=False)  # form데이터를 저장. 그러나 쿼리실행은 x
        review.book = get_object_or_404(Book, pk=self.object.pk)
        review.user = self.request.user  # 댓글쓴 사람 설정.
        review.save()  # 수정된 내용대로 저장. 쿼리실행
        return super(BookDetail, self).form_valid(form)

    def get_object(self):
        object = super(BookDetail, self).get_object()
        object.views_count += 1
        object.save()
        return object

  • save() 메소드 def 꼭 필요한가요? 그부분 빼고 그냥 돌려보세요. 엽토군 2020.5.1 13:34
  • 감사합니다. yubin cho 2020.5.2 03:54

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)