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)