2011-01-22 117 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)

所以你需要在render_to_response之前做form = question_form(),那麼你就可以在模板中做{{ form.as_p }}

+0

所以,我會是正確的思維過程是一樣的東西 形式= make_question_form() form.fields [「嗒嗒」] =#獲取的字段,標記它們在 然後使用{{form.as_p} }模板中? 我會趕快試試。 – bytejunkie 2011-01-22 20:27:55