2012-08-09 12 views

Respuesta

8

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 
Cuestiones relacionadas