Django: FormView, get_context_data делает недействительной проверку формы и отбрасывает входные данные

#python #django #forms #django-class-based-views #formview

#python #django #формы #представления на основе классов django #formview

Вопрос:

Я бы хотел, чтобы мой FormView проводил проверку (показывая, какие поля содержат ошибку), а также повторно использовал уже введенные данные, если форма недействительна.

На данный момент, если форма недействительна:

  1. Ошибка не отображается в форме / поле формы (красный прямоугольник вокруг, с текстом ошибки ниже)
  2. Форма перезагружается, а сделанные входные данные отбрасываются (форма повторно загружается как новая).

Кажется, что get_context_data аннулирует поведение по умолчанию на основе класса FormView

Как вы проверяете несколько форм в контексте, а также как вы повторно загружаете уже выполненные данные формы в таком контексте?

 class ProductFormView(FormView):
    template_name = 'product/product_create.html'
    model = Product
    success_message = f'Product created successfully'
    success_url = '/product/list'

    def get_context_data(self, **kwargs):
        context = super(ProductFormView, self).get_context_data(**kwargs)
        context['form_1'] = CommonFieldsForm(instance=self.model())
        context['form_2'] = PriceForm(instance=self.model())
        return context

    def form_invalid(self, form):
        response = super().form_invalid(form)
        return response

    def form_valid(self, form):
        response = super().form_valid(form)
        return response