Свяжите поле формы Django Bool с кнопкой отправить в форме модели и CBV

#python #django #django-views #django-forms #django-templates

Вопрос:

В представлении есть логическое поле, которое определяет, является ли вопрос нормальным или нуждается в коррекции. Шаблон загрузит две кнопки, которые будут действовать как «отправить в форму», «Вопрос в порядке»и» Вопрос нуждается в коррекции». Мне нужно передать значение этой кнопки как логическое значение поля. Я нашел ответ при использовании представлений на основе функций, но я использую представления на основе классов, поэтому я не знаю, как передать запрос.Значения ПОСТА.

Вот мой views.py и forms.py:

views.py

 class QuestionValidation(PermissionRequiredMixin, UpdateView):
permission_required = 'users.validator'
model = Question
form_class = ValidationForm
template_name = 'question_validation.html'

def get_context_data(self, *args, **kwargs):
    context = super().get_context_data(**kwargs)
    context['question'] = Question.objects.filter(
        question_order=self.kwargs['order']).get(id_by_order=self.kwargs['id_by_order'])
    context['order'] = self.kwargs['order']
    context['id_by_order'] = self.kwargs['id_by_order']
    return context

def get_object(self, *args, **kwargs):
    question_order = Q(question_order__id=self.kwargs['order'])
    question_id = Q(id_by_order__contains=self.kwargs['id_by_order'])
    q = Question.objects.get(question_order amp; question_id)
    return get_object_or_404(Question, pk=q.id)

def get_success_url(self, *args, **kwargs):
    view_name = "order-detail"
    return reverse(view_name, kwargs={'pk': self.kwargs['order']})
 

forms.py

 class ValidationForm(forms.ModelForm):
    class Meta:
        model = Question
        fields = ['revision_report', 'revision_approval']
        widgets = {
            'revision_report': forms.HiddenInput(),
            'revision_approval': forms.HiddenInput(),
        }
 

и часть шаблона, в которую будет загружен этот код:

   <form action="" method="POST">{% csrf_token %}
    {{ form.as_p }}
    <button class="btn btn-success" name="question_approved">Questão aprovada</button>
    <button class="btn btn-danger" name="question_refused">Questão não foi aprovada</button>
  </form>
  <br><br>
  <script src="{% static 'js/hoverValidatorTextbox.js' %}"></script>
{% endblock %}
 

Комментарии:

1. docs.djangoproject.com/en/3.2/topics/class-based-views/intro/…

2. Вау, совсем забыл о переопределении функции post. Огромное спасибо

Ответ №1:

Как сказал Эне П в комментариях, это решает следующая ссылка.

https://docs.djangoproject.com/en/3.2/topics/class-based-views/intro/#handling-forms-with-class-based-views