我有一个包含通用字段的表单
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%}
怎么办?任何的想法 ? 谢谢!
答案 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 ....