有人提出了一些与此有关的问题,但答案对我没有帮助。当我试图在别处(custom templates)建议一个潜在的良好提示时,我没有得到预期的结果。
在我的模板中,我正在从字典中迭代一组键。字典本身源于提交Django formset。
XML模板片段:(我正在渲染为XML文件)
{% for x in range %}
<file type="{{ form-'x'-type }}" viewpath="{{ form-'x'-file }}"/>
{% endfor %}
以上显然不起作用。迭代有效。 range
变量是对应于从视图传递到XML模板的range(int(request.POST['form-TOTAL_FORM']))
的python参数。
在模板的每次迭代中,我都需要{{ form-0-type }}
,{{ form-1-type}}
,{{ form-2-type }}
等。
我该怎么做?如果我真的需要使用自定义过滤器,我该怎么做?
我希望这个问题(以及答案)能帮助许多人解决同样的问题。
感谢。
编辑:(已发布词典)
<QueryDict:
{
u'form-MAX_NUM_FORMS': [u'1000'],
u'form-INITIAL_FORMS': [u'0'],
u'form-TOTAL_FORMS': [u'2'],
u'form-0-type': [u'1'],
u'form-1-type': [u'2'],
u'csrfmiddlewaretoken': [u'LpkjdDcqRCL4VPM0SAuU7efgZjgeubTN']
}>
附加说明: 在第二个视图中,我查找外键的值并将值放在另一个字典中,我将其发送到我的XML模板。
执行此操作的代码片段:
detailed_request = {}
for x in range(0, int(request.POST['form-TOTAL_FORMS'])):
detailed_request['form-'+str(x)+'-type'] = Upload_Type.objects.get(pk=request.POST['form-'+ str(x)+'-type'])
detailed_request['form-'+str(x)+'-file'] = request.FILES['form-'+str(x)+'-file']
以上是一个工作片段。当我追踪detailed_request
时,我拥有了我需要的所有信息:
{
'form-1-type': <Upload_Type: malib>,
'form-0-type': <Upload_Type: axf_file>
}
答案 0 :(得分:0)
如果有人遇到同样的问题,我实际上改变了我做事的方式。
我没有在模板中迭代formset。相反,我在这里实施了Paolo Bergantino的解决方案: Dynamically adding a form to a Django formset with Ajax
然后在我的观点中,我只需从request.FILES
我希望这可以帮助任何以相同的错误方法开始的人。
答案 1 :(得分:-1)
您可以通过以下变量访问for循环辅助变量
forloop.counter The current iteration of the loop (1-indexed)
forloop.counter0 The current iteration of the loop (0-indexed)
更多信息:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for
所以你要......
{{ form }}-{{ forloop.counter }}-{{ type }}