La clave es que ni siquiera tiene que usar una de las subclases FormView
para procesar formularios. Solo tiene que agregar la maquinaria para procesar el formulario manualmente. En el caso donde use una subclase FormView
, solo procesará 1 y solo 1 formulario. Entonces, si necesita dos formularios, solo tiene que manejar el segundo manualmente. Estoy usando DetailView
como una clase base solo para mostrar que ni siquiera tiene que heredar de un tipo FormView
.
class ManualFormView(DetailView):
def get(self, request, *args, **kwargs):
self.other_form = MyOtherForm()
return super(ManualFormView, self).get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
self.other_form = MyOtherForm(request.POST)
if self.other_form.is_valid():
self.other_form.save() # or whatever
return HttpResponseRedirect('/some/other/view/')
else:
return super(ManualFormView, self).post(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(ManualFormView, self).get_context_data(**kwargs)
context['other_form'] = self.other_form
return context