8

新しいDjangoクラスベースのビューメソッドを使用して、1つのページに2つの一意のフォームを表示する方法を長い間探してきました。

誰でも何かを参照できますか?または基本的な例を提供します。これに関して、Google は私の「友達」ではありません。

4

1 に答える 1

8

FormView重要なのは、フォームを処理するためにサブクラスの 1 つを使用する必要さえないということです。フォームを手動で処理するための機械を追加するだけです。サブクラスを使用する場合は、FormView1 つのフォームのみを処理します。したがって、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
于 2012-08-09T21:31:04.913 に答える