Задать вопрос
@robocop45

Как правильно сделать ответ на комментарии?

на данный момент вот такая картина
63bc249a2f2a5070822136.jpeg
добавляя комментарий автоматически добавляется ответ ( для ответов на комментарии это не действует )

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 %}
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@robocop45 Автор вопроса
Спустя 2 дня разобрался(мог бы и быстрее, но у меня учеба)
короче, ошибка, как уже известно была в шаблоне.
{% for i in more_q.get_answer%}
some text
{% for x in i.answer_set.all %}
some text
{%endfor%}
{%endfor%}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы