장고(파이썬) 게시물에 댓글 달기 구현 오류입니다.
조회수 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
댓글 입력