Внесённый в форму комментарий не отображается на странице, но в БД сохраняется, как исправить?
views.py
def more_about_question(request, q_slug):
more_q = get_object_or_404(Questions, slug=q_slug)
answer = Answer.objects.filter(post=more_q) #обращаемся к полю пост, которое равно посту
if request.method == 'POST':
answer_form = AnswerForm(data=request.POST)
if answer_form.is_valid():
print(answer_form.cleaned_data)
ans = answer_form.save(commit=False)
ans.more_q = more_q
ans.save()
else:
answer_form = AnswerForm()
dict = {
'menu':menu,
'more_q':more_q,
'title':'Вопрос',
'answer_form':answer_form,
'answer':answer
}
return render(request, 'blog/more_q.html', dict)
urls.py
urlpatterns = [
path('', MainListVIew.as_view(), name = 'home'),
path('question/<slug:q_slug>', more_about_question, name = 'question'),
]
шаблон
{% extends 'blog/base.html' %}
{% block more_q %}
<td valign="top" class="content">
<!-- Так выглядит вопрос(запись)-->
<div class="square">
<h5 class="category">{{more_q.q_cat}}</h5>
<h1 class="q_name">{{more_q.q_name}}</h1>
{% autoescape off %}
<p class="q_text">{{more_q.q_text}}</p>
{% endautoescape %}
</div>
<!--Подсчет кол-ва ответов на вопрос-->
{% with answer.count as total_answer %}
<h2>
Ответы - {{ total_answer }}
</h2>
{% endwith %}
<!-- форма для заполнения ответов -->
{% if new_answer %}
<h2>Your comment has been added.</h2>
{% else %}
<h2>Add a new comment</h2>
<form method="post">
{{ answer_form.as_p }}
{% csrf_token %}
<p><input type="submit" value="Add comment"></p>
</form>
{% endif %}
<!--Отображаение всех ответов-->
{% for ans in answer %}
<div class="answer">
<p>
Ответ от {{ ans.name }}
{{ ans.created }}
</p>
{{ ans.text|linebreaks }}
</div>
{% empty %}
<p>There are no comments yet.</p>
{% endfor %}
</td>
{% endblock %}
Через админку комментарии(ответы) добавляются нормально, но через форму не работает. Нажимаю на кнопку 'добавить', коммент сохраняется в БД, но не показывается на странице, вот скрин
p.s на отступы во views.py не обращайте внимания, все ок в редакторе
Во вьюхе, после сохренения необходимо снова выполнить запрос в БД, или организовать работу запросов, чтобы одно другому не мешало.
Потому что на сайте отображаются выборки всех записей, которые есть на тот момент, а сохраняете вы после выборки из БД, поэтому и не видно.