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