2011-01-22 16 views
0

私は独自の動的フォームを作成しました。これは、次のようなjames bennettsの例です。 forms.pydjangoの動的フォーム

def make_question_form(request): 
fields = { 'venue' : forms.CharField(widget=forms.HiddenInput()), 
      'survey' : forms.CharField(widget=forms.HiddenInput())} 
return type('Question_Form',(forms.BaseForm,), { 'base_fields': fields }) 

し、それを構築するためのビューで、次の次の行(私はその本当にダイナミックではないが知っているを使用して、私は次のダイナミクスを追加する予定。

question_form = make_question_form(request) 
question_form.base_fields['venue'] = this_venue.name 
question_form.base_fields['survey'] = this_survey.name 
return render_to_response("survey/questions.html", locals(), context_instance=RequestContext(request)) 

が、イムテンプレートでそれをdowith、これは本当にチュートリアルでカバーされていないビットであることがわからない。

私は、次が機能することを出て働いてきた

{% for base_field in question_form.base_fields %} 
     {{ base_field.type }} 
    {% endfor %} 

しかし、私は、フォームとしてそれを構築するポイントは

question_form.as_p 

ような何かをして自分のフォームタグでそれを包むことができるようにと思いました。

私はポイントを逃したか、as_pの作業が必要ですか(そうではありません)。

答えて

1

ビューでフォームをインスタンス化していません。 make_question_formは、新しいフォームを返します。 - 通常、ビューでフォームクラスを使用するときは、form = MyFormClass()またはform = MyFormClass(request.POST)です。

の前にform = question_form()を入力する必要がある場合は、{{ form.as_p }}をテンプレートに追加できます。 は、次に使用に

+0

ので、プロセスを考えての右であろうが フォーム= make_question_formようなものである() form.fields [ '何とか'] = #getフィールド、それらをタグ{{} form.as_p }テンプレートですか? 私は慌ててそれを試みます。 – bytejunkie

+0

あなたに投票するつもりだ、私はあなたが私に言っていたことを解決したと思うから。誰かが役に立つと思った場合に備えて、後でコードを投稿します – bytejunkie