Django FormMixin с DetailView
Ниже представлен мой BlogDetailView с FormMixin для отдельной формы комментария. Все работает хорошо, за исключением валидации формы.
На данный момент я могу иметь CommentForm с исходными данными, где мне нужны скрытые значения, или отправлять данные request.POST, но скрытое значение будет отсутствовать.
Я хочу, чтобы форма использовала исходные данные при создании и использовала данные request.POST при ошибке или обновлении.
class BlogDetailView(FormMixin, DetailView):
model = Post
form_class = CommentForm
def get_success_url(self):
return self.object.get_absolute_url()
def get_context_data(self, **kwargs):
context = super(BlogDetailView, self).get_context_data(**kwargs)
context['form'] = CommentForm(self.request.POST, initial={
'post_id' : self.object.id,
'user_id' : self.request.user.id
})
context['comments'] = self.object.comment_set.all()
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):
print(form.data)
form.save()
return super(BlogDetailView, self).form_valid(form)