2012-08-09 2 views

答えて

8

キーは、フォームを処理するためにサブクラスFormViewのいずれかを使用する必要がないということです。手動でフォームを処理するための機械を追加するだけです。 FormViewサブクラスを使用する場合は、1つのフォームしか処理しません。したがって、2つのフォームが必要な場合は、2つ目のフォームを手動で処理するだけです。私はDetailViewを基底クラスとして使用しているだけで、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