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

Как сделать возможность менять значение кнопки, после ее нажатия?

Всем привет, делаю возможность "отметить как верный ответ". Автор вопроса нажимает на эту кнопку и она менять состояние на "отмечено как верный ответ". Со стороны бэка работает все ок, но до меня не доходит как можно поменять состояние кнопки
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')
  • Вопрос задан
  • 132 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@robocop45 Автор вопроса
Я нашел ответ!!! опять же СО СТОРОНЫ БЭКА ВСЕ РАБОТАЛО ОК. задача: кнопка меняет значение на TRUE и меняется ее вид.
я сделал это так
{% if  user not in i.is_decided.all %}
                                <button class="btn btn-success" type="submit" name="answer_id" value="{{i.id}} ">Пометить как решение</button>

                            {%else%}
                                <button class="btn btn-danger" type="submit" name="answer_id" value="{{i.id}} "> Отменить решение </button>
                            {% endif %}

вот и все
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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