访问模板中的通用表单字段

时间:2011-11-12 16:30:54

标签: python django templates

我有一个包含通用字段的表单

forms.py

 class OfferForm(forms.ModelForm):
      class Meta:
           model=Offer

some_views.py

  def add_field(request):
        form = OfferForm()
        #some logic here
        for x in list:
               form.fields[x]=forms.ModelChoiceField(queryset=some_query)
        return render_to_response(template,{'form':form,'list_of_add_field':list}

所以,在我的模板中,我想做这样的事情:

 {%for x in list_of_add_field%}
 Name add field is {{x}}
 Choices:
{%for y in form.{{x}}.choices %}
     <input type="checkbox" name="form.{{x}}.html_name">y </input>
 {%endfor%}
 {%endfor%}

怎么办?任何的想法 ? 谢谢!

1 个答案:

答案 0 :(得分:0)

我知道你打算这样做,我的回复。您应该将代码调整为django而不是django代码。这样,为了解决您的问题,'prefix'表单资源是正确的选项:

您可以在一个标记内放置几个Django表单。要为每个Form提供自己的命名空间,请使用prefix关键字参数:

>>> mother = PersonForm(prefix="mother")
>>> father = PersonForm(prefix="father")
>>> print mother.as_ul()
<li><label for="id_mother-first_name">First name:</label> <input type="text" name="mother-first_name" id="id_mother-first_name" /></li>
<li><label for="id_mother-last_name">Last name:</label> <input type="text" name="mother-last_name" id="id_mother-last_name" /></li>
>>> print father.as_ul()
<li><label for="id_father-first_name">First name:</label> <input type="text" name="father-first_name" id="id_father-first_name" /></li>
<li><label for="id_father-last_name">Last name:</label> <input type="text" name="father-last_name" id="id_father-last_name" /></li>

在您的情况下,您可以为列表中的每个X创建一个新表单。将所有新表单放在名为formset的列表中。然后,在您的模板中,您应该编写表单循环:

{{for form in formset}}
    ... Here your code for a form ....