2017-07-17 21 views
0

私は2つのモデルを持って、各モデルはそれ自身のフォームを持っています。Djangoのクラスベースのビューで2つのフォーム

テンプレートページには2つのフォームが表示されます。 しかし、私は1つのモデルとフォームしか定義できないことがわかります。

class TicketView(ObjectEditView): 
    form_class = forms.FirstForm 
    model = First 

    def get(self, request, pk): 

     first = get_object_or_404(First, pk = pk) 
     return render(request, 'my_folder/file.html', { 
      'first': first, 
      'form': self.form_class, 
     }) 

しかし、私はどのように私の2番目のフォームを渡すことができますか?

form_classes = {forms.FirstForm, forms.SecondForm} 

このようなものは何ですか?最初の形式のテンプレートで

私もそのような第二のフォームフィールドを表示したいと思い

{% render_field form.comment %} 

でコメントフィールドを表示することができます。

答えて

0

このように複数のフォームを定義できます。もちろん、最初のフォームと同じように2番目のフォームをインポートする必要があります。テンプレートでは{{form2}}を使用します。このフォームの検証も別々に行う必要があります。

class TicketView(ObjectEditView): 
    form_class = forms.FirstForm 
    form_class2 = forms.SecondForm 
    model = First 

    def get(self, request, pk): 
     first = get_object_or_404(First, pk = pk) 
     return render(request, 'my_folder/file.html', { 
      'first': first, 
      'form': self.form_class, 
      "form2":self.form_class2 
     }) 

あなたは疑問を持っているか、これはそれが素晴らしい働いてどのようにコメント:)

+0

を残して動作しない場合。ちょうど現在の値をhtmlに渡す必要があります。たとえば、ステータスの場合、私はドロップダウンしていますが、現在の値は選択されていません。私たちはモデルで何かをしなければなりませんか? – user866933

+0

あなたのやりたいことに依存しますが、必要のないフォームを表示することができます。なぜあなたはエラーになっていますか? – hansTheFranz

+0

それは素晴らしい、ありがとうございます。ちょうど現在の値をhtmlに渡す必要があります。たとえば、ステータスの場合、私はドロップダウンしていますが、現在の値は選択されていません。私たちはモデルで何かをしなければなりませんか? – user866933