편집 기록

편집 기록
  • 프로필 엽토군님의 편집
    날짜2020.05.01

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


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

    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
    
    
  • 프로필 yubin cho님의 편집
    날짜2020.05.01

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


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

    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