Всем привет, делаю возможность "отметить как верный ответ".
Автор вопроса нажимает на эту кнопку и она менять состояние на "отмечено как верный ответ". Со стороны бэка работает все ок, но до меня не доходит как можно поменять состояние кнопки
views.py
#класс для детального просмотра вопроса
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')
def get_success_url(self):
return reverse_lazy('question', kwargs={'q_pk':self.get_object().id})
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = context['more_q']
return context
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
# send_email_after_answer.delay()
self.object.save()
return super().form_valid(form)
#ф-ция для "отметить решением"
def is_decided_question(request, q_pk):
post = get_object_or_404(Answer, id=request.POST.get('answer_id'))
pressed = False
if post.is_decided.filter(id=request.user.id).exists():
post.is_decided.remove(request.user)
pressed = False
else:
post.is_decided.add(request.user)
pressed = True
dict = {
'pressed':pressed
}
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
шаблон
{% if pressed%}
<button class="btn btn-danger" type="submit" name="answer_id" value="{{i.id}} "> Отменить решение </button>
{% else %}
<button class="btn btn-primary" type="submit" name="answer_id" value="{{i.id}} "> Отметить решением</button>
{% endif %}
models.py
class Questions(models.Model):
"""Модель для формирования вопросов"""
class Answer(models.Model):
post = models.ForeignKey(Questions,on_delete=models.CASCADE,null=True)
...
is_decided = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='is_decided_question')