2012-08-09 7 views

Antwort

8

Der Schlüssel ist, dass Sie nicht einmal eine der Unterklassen FormView verwenden müssen, um Formulare zu verarbeiten. Sie müssen nur die Maschinen hinzufügen, um das Formular manuell zu bearbeiten. Wenn Sie eine FormView Unterklasse verwenden, wird nur 1 und nur 1 Formular verarbeitet. Wenn Sie also zwei Formulare benötigen, müssen Sie nur manuell mit dem zweiten Formular umgehen. Ich benutze DetailView als Basisklasse nur um zu zeigen, dass Sie nicht einmal von einem FormView Typ erben müssen.

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 
Verwandte Themen