django中的动态形式
我已经建立了自己的动态形式,有点像詹姆斯·本内特的例子。 在forms.py中使用以下行django中的动态形式,django,django-forms,Django,Django Forms,我已经建立了自己的动态形式,有点像詹姆斯·本内特的例子。 在forms.py中使用以下行 def make_question_form(request): fields = { 'venue' : forms.CharField(widget=forms.HiddenInput()), 'survey' : forms.CharField(widget=forms.HiddenInput())} return type('Question_Form',(forms.Base
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))
但我不确定在模板中如何处理它,这是教程中没有真正涉及的部分
我已经计算出以下方法是有效的
{% for base_field in question_form.base_fields %}
{{ base_field.type }}
{% endfor %}
但我认为把它作为一种形式来构建的目的是能够做一些类似的事情
question_form.as_p
用我自己的表单标签包起来
我是否错过了要点,或者应该这样做(它没有)。您没有在视图中实例化表单。
make\u question\u form
返回一个新的表单类-通常当您在视图中使用表单类时,您会执行form=MyFormClass()
或form=MyFormClass(request.POST)
所以你需要在
呈现给{u-to-u-response
之前执行form=question\u-form()
,然后你就可以在模板中执行{form.as\p}
。那么我认为这个过程类似于form=make\u-question\u-form()form.fields['blah']=#获取字段,标记它们,然后使用{{form.as_p}}在模板中?我会赶紧去试试。我会投票给你,因为我想我已经知道你在告诉我什么。稍后会发布一些代码,以防有人发现它有用