新しいDjangoクラスベースのビューメソッドを使用して、1つのページに2つの一意のフォームを表示する方法を長い間探してきました。
誰でも何かを参照できますか?または基本的な例を提供します。これに関して、Google は私の「友達」ではありません。
FormView
重要なのは、フォームを処理するためにサブクラスの 1 つを使用する必要さえないということです。フォームを手動で処理するための機械を追加するだけです。サブクラスを使用する場合は、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