на данный момент вот такая картина
добавляя комментарий автоматически добавляется ответ ( для ответов на комментарии это не действует )
views
class MoreDetailsQuestion(SuccessMessageMixin, FormMixin, DetailView):
model = Questions
template_name = 'blog/more_q.html'
pk_url_kwarg = 'q_pk'
context_object_name = 'more_q'
form_class = AnswerForm
success_url = reverse_lazy('question')
success_msg = 'Запись успешно обновлена'
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = self.get_form()
if form.is_valid():
if request.POST.get("parent", None):
form.parent_id = int(request.POST.get("parent"))
parent_obj = Answer.objects.get(id=form.parent_id)
replay_comment = form.save(commit=False)
replay_comment.parent = parent_obj
return self.form_valid(form)
else:
return self.form_invalid(form)
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.post = self.get_object()
self.object.author = self.request.user
self.object.save()
return super().form_valid(form)
models
class Questions(models.Model): #это запись, т.е сам контент
...
def get_answer(self):
return self.answer_set.filter(parent__isnull=True)
class Answer(models.Model):
post = models.ForeignKey(Questions,on_delete=models.CASCADE,null=True)
parent = models.ForeignKey(
'self', verbose_name="Родитель", on_delete=models.SET_NULL, blank=True, null=True,
)
шаблон
<form action="." method="post" id="formReview">
{% csrf_token %}
<input type="hidden" name="parent" id="contactparent" value="">
<p><textarea id='contactcomment' rows="5" cols="45" name="text"></textarea></p>
<p><input type="submit" value="Добавить ответ"></p>
</form>
{% for i in more_q.get_answer%}<!--отображаем комментарии где parent__isnull=True-->
some text
{% for x in more_q.answer_set.all %} <!--отображаем все комментарии-->
some text
{% endfor %}
</div>
</div>
{% endfor %}