2

I need to add comments in the Post Detailed View. I am able to submit the comment form but it is not saving the comment, instead, when I click on the submit button the page is reloaded and the comment doesn't get saved.

In models.py

class Comment(models.Model):
post=models.ForeignKey(Post,on_delete=models.CASCADE,related_name="comments")
name=models.CharField(max_length=200)
comment=models.TextField()
created_date=models.DateTimeField(default=timezone.now)
approved_comment=models.BooleanField(default=False)

def __str__(self):
    return self.comment

In forms.py:

from django import forms
from .models import Comment

class CommentForm(forms.ModelForm):
    class Meta:
        model=Comment
        fields=['name','comment']

In views.py:

from django.views.generic.edit import ModelFormMixin
from .forms import CommentForm

class PostDetailView(ModelFormMixin,DetailView):
    model=Post
    form_class=CommentForm

    def get_context_data(self,*args,**kwargs):
        context=super().get_context_data(**kwargs)
        context['form']=self.get_form()
        return context
    def post(self,request,*args,**kwargs):
        self.object=self.get_object()
        form=self.get_form()
        if form.is_valid():
           return self.form_valid(form)
        else:
           return self.form_invalid(form)
    def form_valid(self,form):
        form.instance.post=self.object
        form.save()
        return super().form_valid(form)

0 Answers0