Reputation: 1617
I am getting forms success message in my html template but forms data not saving. here is my code:
views.py:
class BlogDetailsAccount(FormMixin,DetailView):
model = Blog
template_name = 'blog/my-account-blog-details.html'
form_class = CommentFrom
def get_success_url(self):
return reverse('blog:my-account-blog-details', kwargs={'slug': self.object.slug})
def get_context_data(self, **kwargs):
#my context data........
return data
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = self.get_form()
if form.is_valid():
messages.add_message(self.request, messages.INFO, 'Your Comment pending for admin approval')
return self.form_valid(form)
else:
messages.add_message(self.request, messages.INFO, 'Somethings Wrong. Please try again')
return self.form_invalid(form)
def form_valid(self, form):
return super(BlogDetailsAccount, self).form_valid(form)
my models.py:
class BlogComment(models.model):
.......#my models fields....
.............
post_save.connect(BlogComment.user_comment, sender=BlogComment) #using signals
Upvotes: 1
Views: 167
Reputation: 476604
A FormMixin
does not save the data to the database. In case you need to save the form, you should save it in the form_valid
method:
A form_mixin
does not save the data to the database.
class BlogDetailsAccount(FormMixin,DetailView):
# …
def post(self, request, *args, **kwargs):
form = self.get_form() # ← first create a form
self.object = self.get_object() # ← then specify the object
if form.is_valid():
messages.add_message(self.request, messages.INFO, 'Your Comment pending for admin approval')
return self.form_valid(form)
else:
messages.add_message(self.request, messages.INFO, 'Somethings Wrong. Please try again')
return self.form_invalid(form)
def form_valid(self, form):
form.save()
return super().form_valid(form)
You should also likely fill in relevant data like the post where the comment appears and
Upvotes: 2